複製鏈接
請複製以下鏈接發送給好友

lapack

鎖定
LAPACK是由美國國家科學基金等資助開發的著名公開軟件。LAPACK包含了求解科學與工程計算中最常見的數值線性代數問題,如求解線性方程組、線性最小二乘問題、特徵值問題和奇異值問題等 [1] 
中文名
LAPACK
外文名
Linear Algebra PACKag
實質內容
函式集

lapack背景引言

串行程序的自動並行化是當今高性能計算領域的一個重要研究熱點,也是自有高性能並行計算機以來人們 夢寐以求的一個目標.在並行計算機硬件技術蓬勃高速發展的今天,國外已有萬億次, 四萬億次超大規模並行計算機問世,這就為一批急需解決的大型 科學工程計算問題提供了有利 的物資基礎.但是,與上述蓬勃發展的態勢相比,並行算法, 並行軟件技術, 並行開發環境和 支持工 具的嚴重滯後,大大影 響了並行計算機的應用效率與市場推廣.目前國內外各大並行機公司與應用部 都在加大 力度投入大量人力、 物力、 財力加速並行軟件的開發, 其中包括把現有大量成熟的串行軟件移植到並行機上, 這對實際的生產及應用有着重要意義.人工並行化雖然能達到較高 的性能, 但要求對並行計算方法及並行機結構都有較深的瞭解,而且工作量大, 效率低, 易出錯, 這對於大多數應用人員是不現實的, 因此人們 迫切需要有效的 自動並行化工具.現在國際上 已有不少商業化和 非商業化的通用 自動並行化工具, 但是普遍存在實用與效率問題。LAPACK線性代數軟件包是一個可以實用高效地解決上述問題的自動並行化工 具

lapack簡介

LAPACK,其名為Linear Algebra PACKage的縮寫,是一以Fortran編程語言寫就,用於數值計算的函式集。 LAPACK提供了豐富的工具函式,可用於諸如解多元線性方程式、線性系統方程組的最小平方解、計算特徵向量、用於計算矩陣QR分解的Householder轉換、以及奇異值分解等問題。 在NetLib亦提供了API經簡化的Fortran 95版本的LAPACK95。LAPACK以BSD授權的方法釋出。

lapack命名規則

LAPACK裏的每個函數名已經説明了該函數的使用規則。所有函數都是以XYYZZZ的形式命名,對於某些函數,沒有第六個字符,只是XYYZZ的形式 [2] 
第一個字母X代表以下的數據類型:SREAL,單精度實數;DDOUBLEPRECISION,雙精度實數;CCOMPLEX,單精度複數;ZCOMPLEX*16或DOUBLECOMPLEX。[注:在新版LAPACK中含有使用重複迭代法的函數DSGESV和ZCDESV [2]  。]
頭2個字母表示使用的精度:DS輸入數據是double雙精度,算法使用單精度;ZC輸入數據是complex*16,算法使用complex單精度複數 [2] 
接下面兩個字母YY代表數組的類型。BDbidiagonal,雙對角矩陣DIdiagonal,對角矩陣;GBgeneralband,一般帶狀矩陣;GEgeneral(i.e.,unsymmetric,insomecasesrectangular),一般情形(即非對稱,在有些情形下為矩形);GGgeneralmatrices,generalizedproblem(i.e.,apairofgeneralmatrices),一般矩陣,廣義問題(即一對一般矩陣);GTgeneraltridiagonal,一般三對角矩陣;HB(complex)Hermitianband,(複數)厄爾米特帶狀陣HE(complex)Hermitian,(複數)厄爾米特矩陣;HGupperHessenbergmatrix,generalizedproblem(i.eaHessenbergandatriangularmatrix),上海森伯格矩陣,廣義問題(即一個海森伯格矩陣和一個三角矩陣);HP(complex)Hermitian,packedstorage,(複數)壓縮儲存的厄爾米特矩陣;HSupperHessenberg,上海森博格矩陣;OP(real)orthogonal,packedstorage,(實數)壓縮儲存的正交陣;OR(real)orthogonal,(實數)正交陣;PBsymmetricorHermitianpositivedefiniteband,對稱或厄爾米特正定帶狀矩陣;POsymmetricorHermitianpositivedefinite,對稱或厄爾米特正定矩陣;PPsymmetricorHermitianpositivedefinite,packedstorage,壓縮儲存的對稱或厄爾米特正定矩陣;PTsymmetricorHermitianpositivedefinitetridiagonal,對稱或厄爾米特正定三對角陣;SB(real)symmetricband,(實數)對稱帶狀陣;SPsymmetric,packedstorage,壓縮儲存的對稱陣;ST(real)symmetrictridiagonal,(實數)對稱三對角陣;SYsymmetric,對稱陣;TBtriangularband,三角形帶狀矩陣;TGtriangularmatrices,generalizedproblem(i.e.,apairoftriangularmatrices),三角形矩陣,廣義問題(即一對三角形陣);TPtriangular,packedstorage,壓縮儲存的三角形陣;TRtriangular(orinsomecasesquasi-triangular),三角形陣(在某些情形下為類三角形陣);TZtrapezoidal,梯形陣;UN(complex)unitary,(複數)酉矩陣;UP(complex)unitary,packedstorage,(複數)壓縮儲存的酉矩陣 [2] 
最後三個字母ZZZ代表計算方法。比如,SGEBRD是一個單精度函數,用於把一個實數一般陣壓縮為雙對角陣(abidiagonalreduction,即BRD) [2] 

lapack函數舉例

dgesv_()函數用來求解對稱矩陣問題。從名字的意義上可以看出是用來解決雙精度一般型的線性方程(組)的問題。DGESV是用來求解實數的線性方程組AX=B的。A是N×N型矩陣,X和B是N×NRHS型矩陣。與之對應的單精度方式為:sgesv_()方程,只是把雙精度的化為單精度就可以,另外一個就是zgesv_()方程,它解的是複數形式 [2] 
dgeev_()對於非對稱矩陣特徵向量密集複雜的問題應用此函數,此函數的工能是求特徵值。d表示double。ge表示general,説明是普通矩陣,按照列主序存儲。ev表示eigenvector(猜測),表達的是函數的功能 [2] 
intsgetrf_()通過行交換的方式將M×N的矩陣A進行LU分解。矩陣變換有如下形式:A=P*L*U,P矩陣為置換矩陣,L時下三角形式,U是上三角形式 [2] 
參數介紹: M(input)INTEGER矩陣A的行數,M>=0。N (input)INTEGER矩陣A的列數,N>=0。A (input/output)REALarray,A(LDA×N):輸入時,是M×N的將被分解的矩陣。輸出時,A=P*L*U中的L,U;該單位對角元素的L不存儲。LDA(input)INTEGER矩陣A的主尺寸。LDA>=max(1,M)。IPIV(output)INTEGERarray,dimension(min(M,N))指點指數,for1<=i<=min(M,N),矩陣的第i行與IPIV(i)行被交換 [2] 
integer*IPIV=(integer*)malloc(sizeof(integer)*min(M,N));這樣不會被報錯。INFO(output)INTEGER=0:成功退出 [2] 

lapackLAPACK 源代碼分析

LAPACK 包含 了求解一些實際應用 中常見數值線性代數問題的 FORTRAN77 子程序, 如求解線性方程組,線性最小二乘問題, 特徵值問題和奇異值 問題等.LAPACK 還可 以實現如矩陣分解和 條件數估計等相 關的計算.由於在許多高性能計算機上 提供 了高效的 BLAS(基本線性代數子程序庫), 為達到可移植性和 效率的統一,LAPACK盡 可能調用BLAS 來進行計算.LAPACK 是一個龐大 的軟件包, 目前約有 735000 行 FORTRAN 代碼, 完全靠手工 優化的工作量是相 當大 的.為 了使 LAPACK在並行機上 獲得高性能, 有很多針對算法級別優化 的研究, 但我們 要考慮的是在程序級別 上 的優化,也就是指直 接從程序文 本中提取並行性.算法級別的優化雖然可 以達到更高的加速 比, 但工作量要遠遠大於 程序級別 的優化, 而且我們將看到, 程序級別
LAPACK中DGESV運行開銷比例圖 LAPACK中DGESV運行開銷比例圖
的優化也能獲得較高的加速 比.我們利用UNIX系統下 的 profile工具來分析LAPCK 的運行開銷, 得到一個過程級別 的運行開銷比例 圖(如右圖)。

lapack結論與展望

隨着現代科技的高速發展, 在許多重要應用領域,如石油勘探, 氣象, 地震數據處理,核技術等方面出現了一批重大挑戰問題,迫切 需要更高性能的計算機.如何有效的使用並行計算機, 利用並行資源是需要解決 的關鍵問題.自動並行化是解決這一 問題的關鍵技術之一。在共享主 存並行機上針對LAPACK的並行化研究.LAPACK的龐大 的數值代數軟件包 可以通 過對程序的分析生成並行代碼,完成自動數據分佈,通訊代碼生成和優化。
參考資料