1 / 37

對稱正定矩陣 Cholesky 分解 之 GPU 加速研究

對稱正定矩陣 Cholesky 分解 之 GPU 加速研究. 吳博雋 淡江大學資訊管理學系研究生 Windchime.wu@mail.im.tku.edu.tw. 大綱. 緒論 文獻探討 研究方法與目前作法分析 改進與測試 結論與未來發展. 緒論. 數值問題求解過程常需求共變異矩陣之反矩陣,共變異矩陣滿足對稱正定特性,適合用 Cholesky 分解,其速度比傳統 LU 分解還快 矩陣分解傳統有 LAPACK 函式庫可用,隨著硬體進步逐漸發展出多核多緒版本 , 如 MKL 、異質 訊息傳遞 版本,如 ScaLAPACK 、 GPU 版本,如 MAGMA.

abbott
Download Presentation

對稱正定矩陣 Cholesky 分解 之 GPU 加速研究

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 對稱正定矩陣Cholesky分解之GPU加速研究 吳博雋 淡江大學資訊管理學系研究生 Windchime.wu@mail.im.tku.edu.tw

  2. 大綱 • 緒論 • 文獻探討 • 研究方法與目前作法分析 • 改進與測試 • 結論與未來發展

  3. 緒論 • 數值問題求解過程常需求共變異矩陣之反矩陣,共變異矩陣滿足對稱正定特性,適合用Cholesky分解,其速度比傳統LU分解還快 • 矩陣分解傳統有LAPACK函式庫可用,隨著硬體進步逐漸發展出多核多緒版本,如MKL、異質訊息傳遞版本,如ScaLAPACK、GPU版本,如MAGMA

  4. 緒論(續) • GPU採用SIMD(Single Instruction Multiple Data)架構,可擁有數百核同時執行相同指令,比CPU之少數核更適合矩陣平行運算 • 本研究之研究目標及方法為,就現有之GPU版本Cholesky分解之公開程式,分析各版本程式演算法不同之處,評比其時間效能,並嘗試各種方法企圖增快運算速度以提昇效能。

  5. 文獻探討 • Cholesky分解 • BLAS函式庫 • LAPACK函式庫 • 矩陣乘法之時間複雜度

  6. Cholesky分解 • 適用於求解對稱正定矩陣之反矩陣,具有唯一性,複雜度為n3/3+O(n2) • 高斯消去法複雜度為O(n3),LU分解複雜度為2n3/3+O(n2)

  7. 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

  8. 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

  9. 矩陣乘法之時間複雜度 • 一般矩陣乘法:O(n3) • Strassen演算法:O(n2.807) • Coppersmith-Winograd演算法:O(n2.3737) • Stothers:O(n2.3736) • Williams:O(n2.3727)

  10. 研究方法與目前作法分析 • 蒐集公開版本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使用情形 • 差異性分析

  11. Bouckaert與 Volkov版本

  12. Bouckaert與 Volkov版本(續)

  13. Henry版本

  14. MAGMA版本

  15. MAGMA版本(續)

  16. 4版本使用函式情形表 +:CPU使用 MKL函式庫 *:GPU使用 CUBLAS函式庫

  17. 差異性分析 • Bouckaert版本與Volkov版本 • POTRF與TRSM • Bouckaert版本:自製 • Volkov版本:MKL函式庫 • MAGMA版本與Volkov版本 • TRSM • MAGMA版本:GPU • Volkov版本:CPU • 區塊大小不同

  18. 改進與測試 • 測試平台 • 改進方案 • MKL函式庫之使用 • 區塊大小 • 最佳區塊大小 • 相關考量

  19. 測試平台 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

  20. 整合各版本程式後之原始加速比

  21. Bouckaert版本使用MKL函式庫後之Cholesky分解加速比Bouckaert版本使用MKL函式庫後之Cholesky分解加速比

  22. Bouckaert_MKL版本之區塊大小修改為64後之加速比

  23. 區塊大小統一為MAGMA版本給法後之加速比

  24. Volkov版本矩陣維度1000至10000時不同區塊之運算時間表(ms)Volkov版本矩陣維度1000至10000時不同區塊之運算時間表(ms)

  25. 使用適合本平台最佳區塊大小後之加速比

  26. 相關考量 • 誤差值 • MAGMA版本特定矩陣維度較佳原因 • CPU緒數影響 • 不同平台改進方案有效性

  27. 誤差值(單精度)

  28. 誤差值(雙精度)

  29. MAGMA版本矩陣維度4000較佳原因

  30. MAGMA版本矩陣維度8000較佳原因

  31. MAGMA版本矩陣維度8000較佳原因(續)

  32. 各版本於維度10000時不同CPU緒數之Cholesky分解時間表(ms)各版本於維度10000時不同CPU緒數之Cholesky分解時間表(ms)

  33. 不同平台改進方案有效性 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

  34. 於另一GPU平台實驗最後結果之加速比

  35. 結論 • 蒐集四種公開版本使用GPU作Cholesky分解程式,將各版本程式整合測試後,發現Cholesky分解運算速度之快慢順序分別為Volkov、MAGMA、Bouckaert、MKL、Henry • Bouckaert版本於矩陣維度6000以下時,CPU端運算若有使用MKL函式庫則效能較佳;矩陣維度6000以上時,使用MKL函式庫與自製函式無太大差別。故使用MKL函式庫雖然為較好之選擇,但仍會受其他參數影響而無法明顯提升效能

  36. 結論(續) • 區塊大小對運算速度有重要影響,Volkov版本將區塊大小由固定64改為與MAGMA版本同為隨矩陣維度變動方式時,效能明顯提升,尤其在矩陣維度10000時,加速比達到3.5倍以上 • 適用不同矩陣維度之最佳區塊大小也隨平台硬體而不同,本文針對C2050硬體平台,以排班單位warp大小之倍數,窮舉找出適合此平台之矩陣維度1000至10000,及其最佳區塊大小之關係

  37. 未來發展 • 由於MAGMA也有提供多GPU分解原始碼,期待也能透過類似技術提升分解效能 • 目前已有利用GPU實現特殊矩陣乘法之文獻,期待此技術可取代GEMM以更加提升效能

More Related