3.9 各手法の比較

3.9.1 計算時間

表3-9-1に各手法の計算時間をまとめます。

表3-9-1 各手法の計算時間(FOCUSスパコン、benchmark200共通)
No.システムハードウェアノード数高速化手法計算時間出所
nomatrixmatrix
0F CPU 1(参考) 並列化なし 1907秒1223秒表3-3-1
1F CPU 1OpenMP 40スレッド 210秒 293秒表3-3-1
2F CPU 1MPI 40プロセス 178秒 172秒表3-4-1
3F GPU 1CUDA 56秒 50秒表3-6-1
4F GPU 2CUDA+MPI 2プロセス 30秒 27秒表3-6-1
5V SX A1001ベクトル化+OpenMP 8スレッド 89秒 27秒表3-7-1
6W SX A3001ベクトル化+OpenMP 8スレッド+MPI 8プロセス 16秒 7秒表3-7-1
7X FX700 1ベクトル化+OpenMP 12スレッド+MPI 4プロセス 147秒 70秒表3-8-3
8X FX700 6ベクトル化+OpenMP 12スレッド+MPI 24プロセス 60秒 38秒表3-8-3
9(富岳)FX1000 8ベクトル化+OpenMP 12スレッド+MPI 40プロセス 56秒 37秒表3-8-3
CPU : Intel Xeon E5-2698v4 x2
GPU : NVIDIA Tesla P100
SX A100 : NEC SX-Aurora TSUBASA A100-1VE
SX A300 : NEC SX-Aurora TSUBASA A300-8VE
FX700 : Fujitsu Supercomputer PRIMEHPC FX700

3.9.2 計算時間の内訳

計算時間の内訳は以下の通りです。
CPUではnomatrixモードでは行列ベクトル積の時間が増えるのでその比率が上がります。
GPUではその比率はあまり上がりません。
なお、ベクトル演算の計算時間はmatrixモードとnomatrixモードで同じです。


(a) matrixモード


(b) nomatrixモード

図3-9-2 計算時間の内訳

3.9.3 使用メモリー

使用メモリーは以下の通りです。
ただし、Nf:周波数の数、Ne=3*Nx*Ny*Nz:行列の大きさ、Np:プロセス数 です。

CPU:
matrixモード: 8*Nf*Ne + 322*Ne/Np [バイト]
nomatrixモード: 8*Nf*Ne + 114*Ne/Np [バイト]

GPU:
matrixモード: 322*Ne/Np [バイト]
nomatrixモード: 114*Ne/Np [バイト]

例えば、周波数の数=1、Nx=Ny=Nz=100、プロセス数=1のときの使用メモリーは、 matrixモードで約1GB、nomatrixモードで約0.3GBです。

3.9.4 モードの選択

環境と問題に応じて以下のモードを選択してください。

(1) matrixモード
以下のすべてが該当するとき選択してください
・CPUで20コア以下のとき
・問題のサイズがメモリーに収まるとき

(2) nomatrixモード
以下の「いずれか」のとき選択してください
・GPU
・CPUで20コア以上のとき
・問題のサイズが大きくてmatrixモードで計算できないとき