3.1と同じ環境でPython版OpenSTFの計算時間を測定します。
計算時間の全体(ost.logの"total"行)を表示します。
計算時間の大部分はpart-2(SOR法による連立一次方程式の求解)が占めます。
標準版と同じくnovectorモードとvectorモードを実装しています。
表6-4-1にCPU版の計算時間を示します。
8スレッドまたは8プロセスで約6倍速くなります。
Numba並列とmpi4pyの計算時間はほぼ同じです。
また、novectorモードとvectorモードの計算時間はほぼ同じです。
これからCPUでは使用メモリーの少ないnovectorモードを推奨します。
なお、ハイパースレッディングの効果はないので物理コア数を推奨します。
スレッド数 プロセス数 | Numba並列 | mpi4py | ||
---|---|---|---|---|
novector | vector | novector | vector | |
1 | 118.9秒 (1.0) | 108.5秒 (1.0) | 118.6秒 (1.0) | 113.7秒 (1.0) |
2 | 61.1秒 (1.9) | 59.7秒 (1.8) | 61.0秒 (1.9) | 55.8秒 (2.0) |
4 | 31.6秒 (3.8) | 29.3秒 (3.7) | 31.8秒 (3.7) | 29.1秒 (3.9) |
8 | 20.2秒 (5.9) | 18.3秒 (5.9) | 21.1秒 (5.6) | 19.1秒 (6.0) |
16 | 17.3秒 (6.9) | 18.3秒 (5.9) | 23.7秒 (5.0) | 22.0秒 (5.2) |
表6-4-2にベンチマーク問題を変えたときの計算時間を示します。
ベンチマーク | novector | vector |
---|---|---|
300 | 20.2秒 | 18.3秒 |
400 | 47.1秒 | 44.5秒 |
500 | 89.7秒 | 88.2秒 |
600 | 160.2秒 | 152.8秒 |
以上からCPUでは、使用メモリーが少ないnovectorモードを推奨します。
表3-2-2と比べると同条件(CPU、novectorモード、単精度)で、
Python版はC版の約1.5倍の計算時間がかかっています。
表6-4-3にGPU版の計算時間を示します。
GPUではCPUと異なりvectorモードがnovectorモードの約5倍速くなります。
これからGPUでは使用メモリーは増えますがvectorモードを推奨します。
表3-4-1と比べるとGPUではC版とPython版(vectorモード)の計算時間はほぼ同じです。
ベンチマーク | novector | vector |
---|---|---|
300 | 15.4秒 | 3.2秒 |
400 | 35.6秒 | 6.9秒 |
500 | 68.5秒 | 13.3秒 |
600 | 117.4秒 | 23.2秒 |
図6-4-1に表6-4-2と表6-4-3の4ケースの計算時間を示します。