410 likes | 787 Views
對稱正定矩陣 Cholesky 分解 之 GPU 加速研究. 吳博雋 淡江大學資訊管理學系研究生 Windchime.wu@mail.im.tku.edu.tw. 大綱. 緒論 文獻探討 研究方法與目前作法分析 改進與測試 結論與未來發展. 緒論. 數值問題求解過程常需求共變異矩陣之反矩陣,共變異矩陣滿足對稱正定特性,適合用 Cholesky 分解,其速度比傳統 LU 分解還快 矩陣分解傳統有 LAPACK 函式庫可用,隨著硬體進步逐漸發展出多核多緒版本 , 如 MKL 、異質 訊息傳遞 版本,如 ScaLAPACK 、 GPU 版本,如 MAGMA.
E N D
對稱正定矩陣Cholesky分解之GPU加速研究 吳博雋 淡江大學資訊管理學系研究生 Windchime.wu@mail.im.tku.edu.tw
大綱 • 緒論 • 文獻探討 • 研究方法與目前作法分析 • 改進與測試 • 結論與未來發展
緒論 • 數值問題求解過程常需求共變異矩陣之反矩陣,共變異矩陣滿足對稱正定特性,適合用Cholesky分解,其速度比傳統LU分解還快 • 矩陣分解傳統有LAPACK函式庫可用,隨著硬體進步逐漸發展出多核多緒版本,如MKL、異質訊息傳遞版本,如ScaLAPACK、GPU版本,如MAGMA
緒論(續) • GPU採用SIMD(Single Instruction Multiple Data)架構,可擁有數百核同時執行相同指令,比CPU之少數核更適合矩陣平行運算 • 本研究之研究目標及方法為,就現有之GPU版本Cholesky分解之公開程式,分析各版本程式演算法不同之處,評比其時間效能,並嘗試各種方法企圖增快運算速度以提昇效能。
文獻探討 • Cholesky分解 • BLAS函式庫 • LAPACK函式庫 • 矩陣乘法之時間複雜度
Cholesky分解 • 適用於求解對稱正定矩陣之反矩陣,具有唯一性,複雜度為n3/3+O(n2) • 高斯消去法複雜度為O(n3),LU分解複雜度為2n3/3+O(n2)
BLAS函式庫(Basic Linear Algebra Subprograms) • 包含3類矩陣向量運算,本研究用到如下函式 • GEMM(GEneral Matrix Multiplication) C = αop(A)op(B) + βC • SYRK(SYmmetrix Rank K update) C = αop(A)op(A)T + βC • TRSM(TRiangular Solve Multiple rhs) op(A)X = αB Xop(A) = αB • 平行化版本:NVIDIA公司推出使用GPU CUDA架構之CUBLAS
LAPACK函式庫(Linear Algebra PACKage) • 提供數值線性代數運算 • 包含各種聯立線性方程、平方差、特徵值問題求解函式 • 相關矩陣分解函式有LU分解、QR分解、 SVD分解、 Cholesky分解 • 本研究用到如下Cholesky分解函式 • POTRF(POsitive-definite TRiangular Factorization) • spotrf(uplo, n, a, lda, info) • 平行化版本 • CPU版:Intel公司推出之MKL(Math Kernel Library)函式庫、PLASMA(Parallel Linear Algebra Software for Multicore Architectures )、ScaLAPACK(Scalable LAPACK) • GPU版:MAGMA(Matrix Algebra on GPU and Multicore Architectures)、CULA(CUda Linear Algebra) • 本研究用到MKL與MAGMA
矩陣乘法之時間複雜度 • 一般矩陣乘法:O(n3) • Strassen演算法:O(n2.807) • Coppersmith-Winograd演算法:O(n2.3737) • Stothers:O(n2.3736) • Williams:O(n2.3727)
研究方法與目前作法分析 • 蒐集公開版本GPU求解Cholesky分解之原始碼 • Bouckaert • http://www.cs.waikato.ac.nz/~remco/ • Volkov • http://forums.nvidia.com/index.php?showtopic=89084 • Henry • http://runtime.bordeaux.inria.fr/shenry/papers/HS_Cholesky.pdf • MAGMA • http://icl.cs.utk.edu/magma/software • 分析其CPU與GPU使用情形 • 差異性分析
4版本使用函式情形表 +:CPU使用 MKL函式庫 *:GPU使用 CUBLAS函式庫
差異性分析 • Bouckaert版本與Volkov版本 • POTRF與TRSM • Bouckaert版本:自製 • Volkov版本:MKL函式庫 • MAGMA版本與Volkov版本 • TRSM • MAGMA版本:GPU • Volkov版本:CPU • 區塊大小不同
改進與測試 • 測試平台 • 改進方案 • MKL函式庫之使用 • 區塊大小 • 最佳區塊大小 • 相關考量
測試平台 OS:CentOS5.7 Kernel 2.6.18-274.12.1.el5 #1 SMP x86_64 CPU:Intel Xeon E5620 (2.4GHz, 4 Cores) x 2 + 8GB RAM GPU:NvidiaC2050 (1.15GHz, 14 MultiProcessors, 448 Cores, 3GB GDDR3) x 2 CUDA 版本:cudatoolkit_4.0.11_linux_64_rhel5.5 MKL 版本:l_mkl_10.3.2.137 MAGMA 版本:magma_1.1.0
Bouckaert版本使用MKL函式庫後之Cholesky分解加速比Bouckaert版本使用MKL函式庫後之Cholesky分解加速比
Volkov版本矩陣維度1000至10000時不同區塊之運算時間表(ms)Volkov版本矩陣維度1000至10000時不同區塊之運算時間表(ms)
相關考量 • 誤差值 • MAGMA版本特定矩陣維度較佳原因 • CPU緒數影響 • 不同平台改進方案有效性
各版本於維度10000時不同CPU緒數之Cholesky分解時間表(ms)各版本於維度10000時不同CPU緒數之Cholesky分解時間表(ms)
不同平台改進方案有效性 OS:CentOS 6.2 Kernel 2.6.32-220.4.1.el6.x86_54 #1 SMP CPU:Intel Core i7 970 (3.20GHz, 6 Cores) + 24GB RAM GPU:NvidiaGeforce GTX 590 (1.22GHz, 16 MultiProcessors, 512 Cores, 1.5GB GDDR3) x 4 CUDA 版本:cudatoolkit_4.1.11_linux_64_rhel5.5 MKL 版本:l_mkl_10.3.2.137 MAGMA 版本:magma_1.1.0
結論 • 蒐集四種公開版本使用GPU作Cholesky分解程式,將各版本程式整合測試後,發現Cholesky分解運算速度之快慢順序分別為Volkov、MAGMA、Bouckaert、MKL、Henry • Bouckaert版本於矩陣維度6000以下時,CPU端運算若有使用MKL函式庫則效能較佳;矩陣維度6000以上時,使用MKL函式庫與自製函式無太大差別。故使用MKL函式庫雖然為較好之選擇,但仍會受其他參數影響而無法明顯提升效能
結論(續) • 區塊大小對運算速度有重要影響,Volkov版本將區塊大小由固定64改為與MAGMA版本同為隨矩陣維度變動方式時,效能明顯提升,尤其在矩陣維度10000時,加速比達到3.5倍以上 • 適用不同矩陣維度之最佳區塊大小也隨平台硬體而不同,本文針對C2050硬體平台,以排班單位warp大小之倍數,窮舉找出適合此平台之矩陣維度1000至10000,及其最佳區塊大小之關係
未來發展 • 由於MAGMA也有提供多GPU分解原始碼,期待也能透過類似技術提升分解效能 • 目前已有利用GPU實現特殊矩陣乘法之文獻,期待此技術可取代GEMM以更加提升效能