CPU1〜8スレッドとGPUの計算時間を比較します。
表1は共役勾配法でセル数(NXxNYxNZ)を変えたときの計算時間です。()内はCPU1スレッドとの速度比です。(以下同じ)
GPUでは前処理の並列化ができないために前処理を行っていません。
CPU1スレッドに比べて1GPUは7-9倍、2GPUは8-17倍速くなります。
問題のサイズが大きいほど速度比も大きくなります。
CPUのマルチスレッド版があまり速くならないことに比べれば良好な結果です。
表1 EEM-STFの計算時間(共役勾配法)
CPU/GPU | 解法 | 200x200x200 | 400x400x400 | 600x600x600 |
---|---|---|---|---|
CPU 1スレッド | MICCG | 27.0秒(1.0) | 380.0秒(1.0) | 2018.8秒(1.0) |
CPU 2スレッド | MICCG | 18.8秒(1.4) | 252.2秒(1.5) | 1311.2秒(1.5) |
CPU 4スレッド | MICCG | 16.4秒(1.6) | 218.7秒(1.7) | 1101.9秒(1.8) |
CPU 8スレッド | MICCG | 17.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 |
表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 計算モデル