6. EEM-STFの計算時間

CPU1〜8スレッドとGPUの計算時間を比較します。

共役勾配法

表1は共役勾配法でセル数(NXxNYxNZ)を変えたときの計算時間です。 入出力部を除いています。()内はCPU1スレッドとの速度比です。(以下同じ)
GPUでは前処理の並列化ができないために前処理を行っていません。
CPU1スレッドに比べて1GPUは8〜9倍、2GPUは11〜18倍速くなります。 問題のサイズが大きいほど速度比も大きくなります。 CPUのマルチスレッド版があまり速くならないことに比べれば良好な結果です。

表1 EEM-STFの計算時間(共役勾配法)
CPU/GPU 解法 200x200x200 400x400x400 600x600x600
CPU 1スレッドMICCG25.4秒(1.0) 352.5秒(1.0) 1901.8秒(1.0)
CPU 2スレッドMICCG19.2秒(1.3) 263.2秒(1.3) 1377.7秒(1.4)
CPU 4スレッドMICCG17.3秒(1.5) 239.0秒(1.5) 1231.1秒(1.5)
CPU 8スレッドMICCG18.8秒(1.4) 242.1秒(1.5) 1243.3秒(1.5)
GPU X 1 CG 3.2秒(7.9) 38.8秒(9.1) メモリー不足
GPU X 2 CG 2.4秒(10.6) 24.7秒(14.3) 105.4秒(18.0)
収束判定条件 1e-5 1e-5 1e-5
使用メモリー 511MB 3,995MB 13,383MB

SOR法

表2はSOR法でセル数(NXxNYxNZ)を変えたときの計算時間です。
CPU1スレッドに比べて1GPUは14〜17倍、2GPUは18〜32倍速くなります。 問題のサイズが大きいほど速度比も大きくなります。
CPUのマルチスレッド版があまり速くならないことに比べれば良好な結果です。
SOR法では緩和係数ωを適切に選ぶと共役勾配法とほぼ同じ計算時間になります。

表2 EEM-STFの計算時間(SOR法)
CPU/GPU 200x200x200 400x400x400 600x600x600
CPU 1スレッド35.0秒(1.0) 555.0秒(1.0) 2869.1秒(1.0)
CPU 2スレッド29.0秒(1.2) 500.0秒(1.1) 2504.3秒(1.1)
CPU 4スレッド30.7秒(1.1) 499.5秒(1.1) 2524.0秒(1.1)
CPU 8スレッド31.8秒(1.1) 493.5秒(1.1) 2529.9秒(1.1)
GPU X 1 2.5秒(14.0) 33.4秒(16.6)メモリー不足
GPU X 2 2.0秒(17.5) 20.4秒(27.2) 90.7秒(31.6)
緩和係数ω 1.97 1.985 1.99
収束判定条件 2e-5 3e-5 4e-5
使用メモリー 423MB 3,309MB 11,083MB


図1 計算モデル