6. EEM-STFの計算時間

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

共役勾配法

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

表1 EEM-STFの計算時間(共役勾配法)
CPU/GPU 解法 200x200x200400x400x400 600x600x600
CPU 1スレッドMICCG27.0秒(1.0)380.0秒(1.0) 2018.8秒(1.0)
CPU 2スレッドMICCG18.8秒(1.4)252.2秒(1.5) 1311.2秒(1.5)
CPU 4スレッドMICCG16.4秒(1.6)218.7秒(1.7) 1101.9秒(1.8)
CPU 8スレッドMICCG17.4秒(1.5)217.7秒(1.7) 1062.8秒(1.8)
GPU X 1 CG 3.8秒(7.1) 41.0秒(9.2) メモリー不足
GPU X 2 CG 3.1秒(8.7) 27.8秒(13.6) 118.0秒(17.1)
収束判定条件 1e-5 1e-5 1e-5
使用メモリー 511MB 3,995MB 13,383MB

SOR法

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

表2 EEM-STFの計算時間(SOR法)
CPU/GPU 200x200x200 400x400x400 600x600x600
CPU 1スレッド34.3秒(1.0) 563.1秒(1.0) 2836.1秒(1.0)
CPU 2スレッド27.7秒(1.2) 481.5秒(1.1) 2355.6秒(1.2)
CPU 4スレッド28.9秒(1.1) 470.5秒(1.1) 2298.0秒(1.2)
CPU 8スレッド30.2秒(1.1) 477.5秒(1.1) 2281.9秒(1.2)
GPU X 1 3.1秒(11.0) 37.5秒(15.0)メモリー不足
GPU X 2 2.6秒(13.1) 24.6秒(22.8) 107.9秒(26.2)
緩和係数ω 1.97 1.985 1.99
収束判定条件 2e-5 3e-5 4e-5
使用メモリー 423MB 3,309MB 11,083MB


図1 計算モデル