對稱正定矩陣 Cholesky 分解 之 GPU 加速研究
description
Transcript of 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究
![Page 2: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/2.jpg)
2
大綱 緒論 文獻探討 研究方法與目前作法分析 改進與測試 結論與未來發展
![Page 3: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/3.jpg)
3
緒論 數值問題求解過程常需求共變異矩陣之反矩陣,共變異矩陣滿足對稱正定特性,適合用 Cholesky 分解,其速度比傳統 LU 分解還快 矩陣分解傳統有 LAPACK 函式庫可用,隨著硬體進步逐漸發展出多核多緒版本,如
MKL 、 異 質 訊 息 傳 遞 版 本 , 如ScaLAPACK 、 GPU 版本,如 MAGMA
![Page 4: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/4.jpg)
4
緒論 ( 續 ) GPU 採 用 SIMD(Single Instruction Multiple
Data) 架構,可擁有數百核同時執行相同指令,比 CPU 之少數核更適合矩陣平行運算 本研究之研究目標及方法為,就現有之
GPU 版本 Cholesky 分解之公開程式,分析各版本程式演算法不同之處,評比其時間效能,並嘗試各種方法企圖增快運算速度以提昇效能。
![Page 5: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/5.jpg)
5
文獻探討 Cholesky 分解 BLAS 函式庫 LAPACK 函式庫 矩陣乘法之時間複雜度
![Page 6: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/6.jpg)
6
Cholesky 分解 適用於求解對稱正定矩陣之反矩陣,具有唯一性,複雜度為 n3/3+O(n2)
高斯消去法複雜度為 O(n3) , LU 分解複雜度為 2n3/3+O(n2)
![Page 7: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/7.jpg)
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
![Page 8: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/8.jpg)
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
![Page 9: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/9.jpg)
9
矩陣乘法之時間複雜度 一般矩陣乘法: O(n3) Strassen 演算法: O(n2.807) Coppersmith-Winograd 演算法: O(n2.3737)
Stothers : O(n2.3736) Williams : O(n2.3727)
![Page 10: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/10.jpg)
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 使用情形 差異性分析
![Page 11: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/11.jpg)
11
Bouckaert 與 Volkov 版本
![Page 12: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/12.jpg)
12
Bouckaert 與 Volkov 版本( 續 )
![Page 13: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/13.jpg)
13
Henry 版本
![Page 14: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/14.jpg)
14
MAGMA 版本
![Page 15: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/15.jpg)
15
MAGMA 版本 ( 續 )
![Page 16: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/16.jpg)
16
4 版本使用函式情形表
+ : CPU 使用 MKL 函式庫* : GPU 使用 CUBLAS 函式庫
Bouckaert Volkov Henry MAGMA
POTRF CPU CPU+ GPU CPU+
SYRK GPU* GPU*GPU
GPU*
GEMM GPU* GPU* GPU*
TRSM CPU CPU+ GPU GPU*
![Page 17: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/17.jpg)
17
差異性分析 Bouckaert 版本與 Volkov 版本
POTRF 與 TRSM Bouckaert 版本:自製 Volkov 版本: MKL 函式庫
MAGMA 版本與 Volkov 版本 TRSM
MAGMA 版本: GPU Volkov 版本: CPU
區塊大小不同
![Page 18: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/18.jpg)
18
改進與測試 測試平台 改進方案
MKL 函式庫之使用 區塊大小 最佳區塊大小
相關考量
![Page 19: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/19.jpg)
19
測試平台OS : CentOS 5.7 Kernel 2.6.18-274.12.1.el5 #1
SMP x86_64CPU : Intel Xeon E5620 (2.4GHz, 4 Cores) x 2 +
8GB RAMGPU : Nvidia C2050 (1.15GHz, 14
MultiProcessors, 448 Cores, 3GB GDDR3) x 2CUDA 版本: cudatoolkit_4.0.11_linux_64_rhel5.5MKL 版本: l_mkl_10.3.2.137MAGMA 版本: magma_1.1.0
![Page 20: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/20.jpg)
20
整合各版本程式後之原始加速比
1000 2000 3000 4000 5000 6000 7000 8000 9000 100000
0.5
1
1.5
2
2.5
3
3.5
VolkovBouckaertHenryMAGMA
![Page 21: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/21.jpg)
21
Bouckaert 版本使用 MKL 函式庫後之Cholesky 分解加速比
1000 2000 3000 4000 5000 6000 7000 8000 9000 100000
0.5
1
1.5
2
2.5
VolkovBouckaertBouckaert_MKL
![Page 22: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/22.jpg)
22
Bouckaert_MKL 版本之區塊大小修改為64 後之加速比
1000 2000 3000 4000 5000 6000 7000 8000 9000 100000
0.5
1
1.5
2
2.5
Volkov
Bouckaert_MKL
Bouckaert_MKL_NB64
![Page 23: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/23.jpg)
23
區塊大小統一為 MAGMA 版本給法後之加速比
1000 2000 3000 4000 5000 6000 7000 8000 9000 100000
0.5
1
1.5
2
2.5
3
3.5
4
VolkovVolkov_NBMAGMA
![Page 24: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/24.jpg)
24
Volkov 版本矩陣維度 1000 至 10000 時不同區塊之運算時間表 (ms) 維度區塊 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000
32 7.7 22.9 54.7 109.3 196.0 317.5 483.7 701.1 986.7 1331.2
64 7.2 19.3 45.3 91.5 164.2 262.7 403.8 577.6 810.8 1097.8
96 7.0 19.1 43.6 86.4 153.8 248.6 377.2 539.9 704.2 880.9
128 7.1 18.0 41.2 82.7 149.3 239.4 336.0 453.2 610.0 792.7
160 5.9 17.1 40.7 80.3 142.6 212.5 310.7 424.5 580.6 761.3
192 5.8 16.9 40.0 79.9 137.7 196.4 295.2 398.5 558.2 715.7
224 6.4 16.3 39.6 75.8 125.4 192.9 286.3 395.0 546.8 721.1
256 6.5 16.7 39.8 72.7 124.0 191.2 288.3 394.7 549.5 723.4
288 5.7 16.6 40.3 70.8 116.8 183.2 280.2 379.5 536.7 686.8
320 6.5 17.9 41.0 69.7 119.2 184.9 277.4 381.5 532.9 703.1
352 5.9 17.5 39.6 69.4 120.8 185.8 281.6 385.9 538.3 709.8
384 5.6 18.2 39.4 68.7 114.2 179.3 275.2 371.7 527.1 674.4
416 5.6 19.0 41.6 69.5 119.1 184.3 275.1 380.3 526.0 695.1
448 7.7 19.7 44.1 74.1 122.9 188.7 279.9 383.8 534.7 703.5
![Page 25: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/25.jpg)
25
使用適合本平台最佳區塊大小後之加速比
1000 2000 3000 4000 5000 6000 7000 8000 9000 100000
0.5
1
1.5
2
2.5
3
3.5
4
Volkov_NBVolkov_BestNB
![Page 26: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/26.jpg)
26
相關考量 誤差值 MAGMA 版本特定矩陣維度較佳原因 CPU 緒數影響 不同平台改進方案有效性
![Page 27: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/27.jpg)
27
誤差值 ( 單精度 )N Volkov Bouckaert Henry MAGMA MKL
1000 6.26E-14 5.39E-14 8.81E-14 3.25E-14 6.62E-14
2000 1.49E-13 1.39E-13 2.16E-13 6.16E-14 1.66E-13
3000 1.16E-13 1.27E-13 1.90E-13 4.11E-14 1.00E-13
4000 1.06E-13 1.31E-13 1.96E-13 3.59E-14 9.41E-13
5000 3.05E-13 3.96E-13 6.21E-13 1.00E-13 2.75E-13
6000 2.95E-13 3.99E-13 6.06E-13 8.53E-14 2.57E-13
7000 2.80E-13 3.90E-13 6.04E-13 7.66E-14 2.45E-13
8000 2.78E-13 3.93E-13 6.08E-13 6.79E-14 2.49E-13
9000 2.73E-13 3.92E-13 5.89E-13 5.87E-14 2.38E-13
10000 2.71E-13 4.02E-13 6.16E-13 5.42E-14 2.43E-13
![Page 28: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/28.jpg)
28
誤差值 ( 雙精度 )N Volkov Bouckaert Henry MAGMA MKL
1000 2.33E-31 1.89E-31 3.54E-14 9.06E-32 2.43E-31
2000 5.10E-31 4.78E-31 5.89E-14 1.93E-31 5.82E-31
3000 3.99E-31 4.54E-31 4.40E-14 1.36E-31 3.51E-31
4000 3.66E-31 4.36E-31 4.19E-14 1.03E-31 3.17E-31
5000 1.08E-30 1.40E-30 5.35E-14 3.41E-31 9.66E-31
6000 1.03E-30 1.39E-30 4.12E-14 2.87E-31 8.58E-31
7000 9.60E-31 1.39E-30 3.93E-14 2.52E-31 8.60E-31
8000 9.72E-31 1.39E-30 4.48E-14 2.24E-31 8.58E-31
9000 9.10E-31 1.37E-32 4.28E-14 2.05E-31 8.44E-31
10000 9.14E-31 1.42E-30 3.88E-14 1.93E-31 8.21E-31
![Page 29: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/29.jpg)
29
MAGMA 版本矩陣維度 4000 較佳原因N 區塊 SYRK MEMCPY
CPU→GPUGEMM POTRF MEMCPY
GPU→CPUTRSM SUM
3000
128* 4.67 0.39 34.60 13.15 0.61 16.54 70.16
224 4.32 0.42 29.01 7.79 0.70 13.64 56.09
288 6.21 0.47 26.20 10.83 0.81 13.77 58.52
4000
128 7.99 0.58 75.18 16.18 0.83 23.39 124.34
224* 11.22 0.63 50.68 10.23 0.94 18.48 92.37
288 13.64 0.70 36.53 14.25 1.09 20.03 86.45
5000
128 12.21 0.77 157.11 20.65 1.03 32.70 224.68
224 27.51 0.82 138.47 12.97 1.19 27.72 208.90
288* 20.15 0.92 131.60 17.81 1.36 31.24 203.34
![Page 30: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/30.jpg)
30
MAGMA 版本矩陣維度 8000 較佳原因N 區塊 SYRK MEMCPY
CPU→GPUGEMM POTRF MEMCPY
GPU→CPUTRSM SUM
7000
128 54.61 1.34 410.51 28.56 1.43 51.53 547.97
224 67.75 1.44 381.21 17.97 1.66 44.87 514.90
288* 41.27 1.62 366.80 24.89 1.91 54.67 491.17
8000
128 97.40 1.52 507.47 32.68 1.65 61.11 701.83
224 94.73 1.63 384.81 20.50 1.89 52.66 556.21
288* 57.20 1.84 272.62 28.36 2.18 64.48 426.69
9000
128 146.48 1.71 876.37 37.06 1.85 74.14 1137.61
224 121.37 1.86 819.71 23.18 2.13 65.79 1034.04
288* 69.52 2.09 796.71 32.03 2.47 83.95 986.77
![Page 31: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/31.jpg)
31
MAGMA 版本矩陣維度 8000 較佳原因( 續 )N SYRK
MEMCPYCPU→GPU
GEMM POTRFMEMCPY
GPU→CPUTRSM SUM
7000 41.27 1.62 367.33 26.84 1.90 54.58 493.55
7100 45.88 1.64 381.33 25.28 1.94 55.59 511.66
7200 43.65 1.65 189.07 25.90 1.96 52.61 314.84
7300 44.87 1.68 421.15 26.13 1.99 58.22 554.05
7400 48.94 1.70 436.59 26.36 2.02 59.26 574.88
7500 48.09 1.73 455.44 26.95 2.06 60.98 595.25
7600 52.75 1.73 474.63 27.30 2.07 60.14 618.61
7700 53.37 1.78 492.56 27.43 2.11 63.61 640.85
7800 52.29 1.79 512.31 27.97 2.13 65.58 662.07
7900 57.45 1.82 532.32 28.45 2.14 60.55 682.74
8000 57.23 1.84 272.71 30.28 2.17 64.47 428.72
8100 56.58 1.88 583.30 29.03 2.25 69.98 743.03
8200 61.64 1.91 599.20 29.21 2.26 70.87 765.09
8300 62.02 1.95 643.05 30.24 2.30 72.71 812.28
8400 60.65 1.96 644.48 30.75 2.32 72.00 812.16
8500 66.23 1.99 668.08 30.31 2.34 75.78 844.73
8600 66.59 2.01 688.13 30.87 2.39 77.18 867.16
8700 65.15 2.04 716.88 31.23 2.41 79.05 896.75
8800 70.23 2.05 372.16 31.46 2.42 76.38 554.71
8900 71.37 2.10 769.83 31.99 2.46 82.30 960.04
9000 69.52 2.09 797.40 33.83 2.46 83.87 989.18
![Page 32: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/32.jpg)
32
各版本於維度 10000 時不同 CPU 緒數之Cholesky 分解時間表 (ms)
緒數 Volkov_NB MAGMA MKL
1 1168.64 1286.05 19457.86
2 771.14 1285.62 9637.81
3 715.46 1286.74 6430.87
4 698.17 1286.67 4888.04
5 693.67 1285.03 3921.19
6 693.92 1285.39 3354.44
7 697.94 1286.87 2898.38
8 696.40 1286.07 2653.25
![Page 33: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/33.jpg)
33
不同平台改進方案有效性OS : CentOS 6.2 Kernel 2.6.32-220.4.1.el6.x86_54
#1 SMPCPU : Intel Core i7 970 (3.20GHz, 6 Cores) +
24GB RAMGPU : Nvidia Geforce GTX 590 (1.22GHz, 16
MultiProcessors, 512 Cores, 1.5GB GDDR3) x 4CUDA 版本: cudatoolkit_4.1.11_linux_64_rhel5.5MKL 版本: l_mkl_10.3.2.137MAGMA 版本: magma_1.1.0
![Page 34: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/34.jpg)
34
於另一 GPU 平台實驗最後結果之加速比
1000 2000 3000 4000 5000 6000 7000 8000 9000 100000
1
2
3
4
5
6
VolkovVolkov_NBMAGMA
![Page 35: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/35.jpg)
35
結論 蒐集四種公開版本使用 GPU 作 Cholesky 分解程式,將各版本程式整合測試後,發現 Cholesky 分解 運 算 速 度 之 快 慢 順 序 分 別 為
Volkov 、 MAGMA 、 Bouckaert 、 MKL 、 Henry Bouckaert 版本於矩陣維度 6000 以下時, CPU端運算若有使用 MKL 函式庫則效能較佳;矩陣維度 6000 以上時,使用 MKL 函式庫與自製函式無太大差別。故使用 MKL 函式庫雖然為較好之選擇,但仍會受其他參數影響而無法明顯提升效能
![Page 36: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/36.jpg)
36
結論 ( 續 ) 區塊大小對運算速度有重要影響, Volkov 版本將區塊大小由固定 64 改為與 MAGMA 版本同為隨矩陣維度變動方式時,效能明顯提升,尤其在矩陣維度 10000 時,加速比達到 3.5 倍以上 適用不同矩陣維度之最佳區塊大小也隨平台硬體而不同,本文針對 C2050 硬體平台,以排班單位 warp 大小之倍數,窮舉找出適合此平台之矩陣維度 1000 至 10000 ,及其最佳區塊大小之關係
![Page 37: 對稱正定矩陣 Cholesky 分解 之 GPU 加速研究](https://reader033.fdocuments.net/reader033/viewer/2022050701/568156c4550346895dc45789/html5/thumbnails/37.jpg)
37
未來發展 由於 MAGMA 也有提供多 GPU 分解原始碼,期待也能透過類似技術提升分解效能 目前已有利用 GPU 實現特殊矩陣乘法之文獻,期待此技術可取代 GEMM 以更加提升效能