OpenMOMの計算時間を以下の環境で測定します。
計算時間は表3-3-1と図3-3-1の通りです。
SIMDによるベクトル化とOpenMPによる並列化を行っています。
SIMDにより約3倍、OpenMPにより約5倍、全体で約15倍速くなります。
スレッド数 | SIMDなし | SSE | AVX |
---|---|---|---|
1 | 182.8秒 (1.0) | 75.6秒 (1.0) | 65.0秒 (1.0) |
2 | 108.1秒 (1.69) | 43.7秒 (1.73) | 36.7秒 (1.77) |
4 | 82.8秒 (2.21) | 24.9秒 (3.04) | 22.1秒 (2.93) |
8 | 43.8秒 (4.17) | 15.2秒 (4.99) | 14.1秒 (4.60) |
16 | 28.4秒 (6.43) | 14.1秒 (5.37) | 12.6秒 (5.15) |
図3-3-1 OpenMOMの計算時間 (要素数=10000、単精度)
図3-3-2にベンチマーク5000~20000の計算時間を示します。
計算時間は要素数の3乗に比例します。
倍精度の計算時間は単精度の約2.5倍です。
図3-3-2 OpenMOMの計算時間 (AVX、16スレッド)