~GPUベンチマークテストの一環として~

2014年6月11日(水)-13日(金) 第43回数値解析シンポジウム・ポスター発表
も
MAGMAとGPUを用いた線型常微分方程式の解析解計算
~GPUベンチマークテストの一環として~
幸谷 智紀
静岡理工科大学 総合情報学部 http://cs-tklab.na-inet.jp/
1.目的
4. 行列指数関数exp(A)
①CUDAが普及したとはいえ,GPUプログラミングは煩雑で習得が難しい
(という人が多い)。
②倍精度線型計算はLAPACK/BLAS互換の高性能ライブラリの使用が
スタンダードに。
Host
Grid 0
Block 0
Local
memory
Grid 1
Block 1
S
L
L
L
L
L
L
L
L
Block 2
L
L
L
L
Block 3
S
L
L
S
L
L
L
L
Grid 2
Grid 3
Block 1
Block 0
S
S
L
L
L
Block 2
L
L
L
L
L
Z2 := T -1Z1
Y(t) := Re Z2
L
L
Block 2
L
L
L
Double Prec. exp(A) * y0: Speedup Ratio CPU vs. GPU
GT640 is Faster!
2
1.5
Block 3
1
S
L
L
L
L
0.5
GTX780 is Faster!
Device(GPU)
0
PCIe bus
64
128
256
512
1024
Dimension
RAM
・PCIeバスを通じて
のデータ転送が低速
・CUDA Toolkitを使用してのプログラミング(特にカーネル関数)が複雑
●MAGMAの特徴
MAGMA
・オープンソースソフトウェアとして無料
MAGMA
LAPACK
CUBLAS
BLAS
で使用できる(http://icl.cs.utk.edu/
BLAS Level1, 2 and 3
CUDA
magma/)
・通常のCPU用プログラミング(ホストプログラム)として作成可能
・LAPACKと同様の関数が使用可能→LAPACKベースのホストプログラ
ムのGPU使用対応作業が楽
DGEEV(PhenomII+GT640)
Host(CPU)
Tridiag
Dim
64
128
256
512
1024
2048
4096
8192
CPU/GPU
7
5
// LAPACK(Row-Major or Column-Major)
info = LAPACKE_dgeev(LAPACK_COL_MAJOR, 'N', 'V', dim, ma, dim,
re_eig, im_eig, NULL, dim, revec, dim);
2
Host
DGESV
A
GPU
T, Λ
z1 := T -1y0
z2 := exp(tΛ) z1
magma_dgeev
magma_dgesv
A
T, Λ
z1 := T -1y0
z3 := T z2
y(t) := Re z3
8192
Time(s)
PhenomPhenomII
II+GT640
0.1
1.0
0.3
1.4
2.8
1.8
7.9
6.9
30.0
23.0
172.2
108.4
1305.5
781.7
6131.5
2656.6
||exp(A)||_F
RelDiff
2.58E-15
3.20E-14
3.24E-15
8.41E-15
5.11E-14
6.92E-13
6.88E-14
2.56E-12
Time(s)
||exp(A)||_F
Corei7H+GTX
Corei7H
RelDiff
780
0.01
0.59
2.58E-15
0.06
0.65
2.02E-14
0.4
1.67
1.49E-13
2.15
3.29
1.61E-13
5.84
5.62
1.06E-14
26.78
20.85
8.30E-13
189.51
138.71
2.13E-13
1499.66
913.38
1.12E-11
Double Prec. exp(A): Speedup Ratio CPU vs. GPU
GT640 is Faster!
3
GTX780 is Faster!
1
0
128
512
1024
2048
4096
Dimension
DGSYEVD(PhenomII+GT640)
DGSYEVD(Corei7H+GTX780)
DGEEV(PhenomII+GT640)
DGEEV(Corei7H+GTX780)
DSYEVD
Dim
128
256
512
1024
2048
4096
8192
DGEEV
DGEMV
4096
DGEEV(Corei7H+GTX780)
4
64
3. 線型常微分方程式(ODE)の解析解
2048
6
// MAGMA(Column-Major)
magma_dgeev('N', 'V', dim, magma_ma, dim, re_eig, im_eig, NULL,
dim, magma_revec, dim, h_work, (magma_int_t)lwork_num, &info);
DGEEV
・計算性能はCPU, GPU
共,Core i7H (+
GTX780)が圧倒的に高
い
・CPU性能に対するGPU
性能向上比はPhenom
II x6 + GT640の方が高
い
L
S
L
CPU/GPU
2.5
S
L
S
L
Block 1
S
Block 3
S
L
Block 0
Constant memory
S
L
L
Global memory
L
Z2 := Z1T -1
DGESV
S
Texture memory
L
Block 1
S
Block 3
S
L
Block 0
S
Block 2
L
magma_dgesv
Z1 := Z1Y0
[共通Software] CUDA 6.0 x86_64 + MAGMA 1.4.1 + Intel C Compiler 14.04
[Corei7H+GTX780] Intel Core i7 4770(3.4GHz) + GTX780 (3GB)
[PhenomII+GT640] AMD Phenom II x6 + GT640 (512MB)
Thread 2 Shared
Thread 1
memory
Thread 0
L
A
5. ベンチマークテスト
2. GPUとMAGMA
L
T, Λ
magma_dgeev
Z1 := T exp(tΛ)
○LAPACK互換のMAGMA(Matrix Algebra on GPU and Multicore Architectures)を使ったベンチマークテストを行い,教育用コンテンツとして使
いたい。
○線型常微分方程式(LODE)の解析解を固有値計算を用いて解いてみ
る(倍精度計算で高精度な対角化が可能な行列に限定)。・・・適度に複
雑で,(理工系の数学的素養があれば)誰でも分かるものを選択。
●GPUの特徴と機
能
・低性能な演算コ
アを多数備えるの
で並列処理が得意
・グラフィックスカー
ド上のメモリを使用
し,CPU(Host)側の
RAMとは分離され
ている。
T, Λ
A
DGEEV
GPU
256
8192
・計算性能に関してはベ
クトルのケースと同様の
傾向
・実対称行列行列用の計
算はCPU側の処理が少
なく,GPUによる性能向
上率が高い
Time(s)
||exp(A)||_F
Time(s)
PhenomII Phenom-
RelDiff
Corei7H Corei7H+G
0.52
1.62
2.81
9.26
56.6
457.95
3014.67
0.86
1.42
2.16
4.31
13.81
76.71
458.94
Time(s)
Dim
PhenomII
128
256
512
1024
2048
4096
8192
0.55
4.62
11.19
39.52
225.12
1674.83
8433.5
PhenomII+GT640
1.16
2.96
9.09
38.11
148.33
1082.68
4697.03
1.17E-14
0
1.23E-14
2.44E-14
5.32E-14
0
2.32E-13
||exp(A)||_F
0.03
0.08
0.23
1.19
8.98
74.08
595.81
0.02
0.56
0.78
2.14
5.87
30.09
175.39
Time(s)
Corei7H+G
RelDiff Corei7H
TX780
8.83E-15
0.05
0.5
7.42E-15
0.2
0.63
6.23E-15
0.93
1.48
7.92E-15
3.15
4.03
9.48E-14
17.24
15.46
6.68E-14 113.27
85.42
6.5E-13
968.17
688.32
||exp(A)||_F
RelDiff
2.05E-14
0
1.47E-14
5.67E-14
1.64E-14
1.49E-14
1.75E-13
||exp(A)||_F
RelDiff
0
6.2E-15
4.23E-15
2.99E-15
2.76E-14
2.41E-14
9.52E-15
→今後の課題:行列ごとに「成功」「失敗」のデータベースを作成
Copyright © 2014 Tomonori Kouya, All rights reserved.