2.5 計算時間

表2-5-1にCPU版でOpenMPとMPIのコア数を変えたときの計算時間を示します。 OpenMPではコア数はスレッド数に、MPIではコア数はプロセス数に一致します。 CPUはFOCUSスパコン[9]を用いています。

表2-5-1 CPU版の計算時間(()内は1コアとの速度比)
コア数 OpenMP MPI
1 329.0秒(1.0) 312.6秒(1.0)
2 165.7秒(1.99)158.0秒(1.98)
4 87.4秒(3.76) 81.8秒(3.82)
8 49.3秒(6.67) 46.3秒(6.75)
20 25.9秒(12.7) 25.8秒(12.1)
40 17.1秒(19.2) 20.2秒(15.5)
80(2ノード) 23.7秒(13.2)
CPU : Intel Xeon E5-2698 v4 X 2 (2.20GHz, TB3.60GHz, 20コア40スレッド X 2) GCC 4.4.7
計算条件 : red-black SOR法, Nx=Ny=Nz=400, 反復回数=400, ω=1.99

表2-5-1をグラフにしたものが図2-5-1です。 OpenMPとMPIの計算時間はほぼ同じです。
参考までにGPUの計算時間も記しています。CPUの40コアで1GPUと同程度になることがわかります。


図2-5-1 スレッド数と計算時間の関係

GPU版のグラフィックスボードの数を1または2としたときの計算時間を図2-5-2に示します。
2GPUは1GPUのほぼ2倍速くなります。 またTesla P100はGTX 1070の2倍弱速いです。


図2-5-2 GPU数と計算時間の関係
GTX 1070 : NVIDIA GeForce GTX 1070 (1920コア, 8GB) CUDA 9.2, Windows10
Tesla P100 : NVIDIA Tesla P100 (3584コア, 16GB) CUDA 8.0, FOCUSスパコン
計算条件 : red-black SOR法, Nx=Ny=Nz=600, 反復回数=600, ω=1.99