背景引言
串列程式的自動
並行化是當今高性能計算領域的一個重要研究熱點,也是自有高性能並行計算機以來人們 夢寐以求的一個目標.在並行計算機硬體技術蓬勃高速發展的今天,國外已有萬億次, 四萬億次超大規模並行計算機問世,這就為一批急需解決的大型 科學工程計算問題提供了有利 的物資基礎.但是,與上述蓬勃發展的態勢相比,並行算法, 並行軟體技術, 並行
開發環境和 支持工 具的嚴重滯後,大大影 響了並行計算機的套用效率與市場推廣.目前國內外各大並行機公司與套用部 都在加大 力度投入大量人力、 物力、 財力加速並行軟體的開發, 其中包括把現有大量成熟的串列軟體移植到並行機上, 這對實際的生產及套用有著重要意義.人工並行化雖然能達到較高 的性能, 但要求對並行計算方法及並行機結構都有較深的了解,而且工作量大, 效率低, 易出錯, 這對於大多數套用人員是不現實的, 因此人們 迫切需要有效的 自動並行化工具.現在國際上 已有不少商業化和 非商業化的通用 自動並行化工具, 但是普遍存在實用與效率問題。LAPACK線性代數軟體包是一個可以實用高效地解決上述問題的自動並行化工 具
簡介
LAPACK,其名為Linear Algebra PACKage的縮寫,是一以Fortran程式語言寫就,用於
數值計算的函式集。 LAPACK提供了豐富的工具函式,可用於諸如解多元線性方程式、線性系統方程組的最小平方解、計算特徵向量、用於計算矩陣QR分解的Householder轉換、以及奇異值分解等問題。 在NetLib亦提供了API經簡化的Fortran 95版本的LAPACK95。LAPACK以BSD授權的方法釋出。
命名規則
LAPACK里的每個函式名已經說明了該函式的使用規則。所有函式都是以XYYZZZ的形式命名,對於某些函式,沒有第六個字元,只是XYYZZ的形式。
第一個字母X代表以下的數據類型:SREAL,單精度實數;DDOUBLEPRECISION,雙精度實數;CCOMPLEX,單精度複數;ZCOMPLEX*16或DOUBLECOMPLEX。[註:在新版LAPACK中含有使用重複疊代法的函式DSGESV和ZCDESV。]
頭2個字母表示使用的精度:
DS輸入數據是double雙精度,算法使用單精度;
ZC輸入數據是complex*16,算法使用complex
單精度複數。
接下面兩個字母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,(複數)壓縮儲存的酉矩陣。
最後三個字母ZZZ代表計算方法。比如,SGEBRD是一個單精度函式,用於把一個實數一般陣壓縮為雙對角陣(abidiagonalreduction,即BRD)。
函式舉例
dgesv_()函式用來求解對稱矩陣問題。從名字的意義上可以看出是用來解決雙精度一般型的線性方程(組)的問題。DGESV是用來求解實數的線性方程組AX=B的。A是N×N型矩陣,X和B是N×NRHS型矩陣。與之對應的單精度方式為:sgesv_()方程,只是把雙精度的化為單精度就可以,另外一個就是zgesv_()方程,它解的是複數形式。
dgeev_()對於非對稱矩陣特徵向量密集複雜的問題套用此函式,此函式的工能是求特徵值。d表示double。ge表示general,說明是普通矩陣,按照列主序存儲。ev表示eigenvector(猜測),表達的是函式的功能。
intsgetrf_()通過行交換的方式將M×N的矩陣A進行LU分解。矩陣變換有如下形式:A=P*L*U,P矩陣為置換矩陣,L時下三角形式,U是上三角形式。
參數介紹: 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)行被交換。
integer*IPIV=(integer*)malloc(sizeof(integer)*min(M,N));這樣不會被報錯。INFO(output)INTEGER=0:成功退出。
LAPACK 原始碼分析
LAPACK 包含 了求解一些實際套用 中常見數值線性代數問題的 FORTRAN77 子程式, 如求解線性方程組,線性最小二乘問題, 特徵值問題和奇異值 問題等.LAPACK 還可 以實現如矩陣分解和 條件數估計等相 關的計算.由於在許多高性能計算機上 提供 了高效的 BLAS(基本線性代數子程式庫), 為達到可移植性和 效率的統一,LAPACK盡 可能調用BLAS 來進行計算.LAPACK 是一個龐大 的軟體包, 目前約有 735000 行 FORTRAN 代碼, 完全靠手工 最佳化的工作量是相 當大 的.為 了使 LAPACK在並行機上 獲得高性能, 有很多針對算法級別最佳化 的研究, 但我們 要考慮的是在程式級別 上 的最佳化,也就是指直 接從程式文 本中提取並行性.算法級別的最佳化雖然可 以達到更高的加速 比, 但工作量要遠遠大於 程式級別 的最佳化, 而且我們將看到, 程式級別的最佳化也能獲得較高的加速 比.我們利用
UNIX系統下 的 profile工具來分析LAPCK 的運行開銷, 得到一個過程級別 的運行開銷比例 圖(如右圖)。
結論與展望
隨著現代科技的高速發展, 在許多重要套用領域,如
石油勘探, 氣象, 地震數據處理,
核技術等方面出現了一批重大挑戰問題,迫切 需要更高性能的計算機.如何有效的使用並行計算機, 利用並行資源是需要解決 的關鍵問題.自動並行化是解決這一 問題的關鍵技術之一。在共享主 存並行機上針對LAPACK的並行化研究.LAPACK的龐大 的數值代數軟體包 可以通 過對程式的分析生成並行代碼,完成自動數據分布,通訊代碼生成和最佳化。