2.9 計算時間

OpenMOMの計算時間を表2-9-1の3つの環境でテストします。 CPUはどちらもSSEとAVXとサポートしています。 並列化にはOpenMPを用います。

表2-9-1 テスト環境
テスト環境1テスト環境2[7]テスト環境3[7]
CPUIntel Core i7-4770K
(4コア8スレッド) 定格
Intel Xeon E5-2680v2
(10コア20スレッド) x2
Intel Xeon E5-2680v2
(10コア20スレッド) x2
OSWindows 10 64bitLinux 2.6.32 64bitLinux 2.6.32 64bit
コンパイラーMicrosoft Visual C++ 2015gcc 4.8.2Intel C/C++ 16.0.2

テスト環境1の計算時間は表2-9-2の通りです。

表2-9-2 計算時間(テスト環境1、要素数=10000、()内は1スレッドとの速度比)
スレッド数テスト環境1
SIMDなしSSEAVX
1192.9秒(1.0)119.1秒(1.0)119.2秒(1.0)
2111.5秒(1.73)60.5秒(1.97)61.2秒(1.95)
472.7秒(2.65)32.3秒(3.69)32.9秒(3.62)
852.0秒(3.71)24.4秒(4.88)23.7秒(5.03)

表2-9-2をグラフにしたものが図2-9-1です。
これからテスト環境1では以下のことがわかります。


図2-9-1 スレッド数と計算時間の関係(テスト環境1)

テスト環境2とテスト環境3の計算時間は表2-9-3の通りです。

表2-9-3 計算時間(テスト環境2,3、要素数=10000、()内は1スレッドとの速度比)
スレッド数テスト環境2(gcc)テスト環境3(icc)
SIMDなしSSEAVXSIMDなしSSEAVX
1229.0秒(1.0)181.7秒(1.0)123.7秒(1.0)167.2秒(1.0)142.5秒(1.0)139.5秒(1.0)
2128.2秒(1.79)123.8秒(1.47)109.0秒(1.13)107.2秒(1.56)108.1秒(1.32)108.0秒(1.29)
468.5秒(3.34)51.3秒(3.54)48.9秒(2.53)54.6秒(3.06)54.9秒(2.60)55.0秒(2.54)
839.0秒(5.87)28.8秒(6.31)28.7秒(4.31)29.9秒(5.59)29.3秒(4.86)30.0秒(4.65)
1230.5秒(7.51)23.4秒(7.76)22.6秒(5.47)21.6秒(7.74)21.4秒(6.66)19.1秒(7.30)
1625.6秒(8.95)20.7秒(8.78)21.1秒(5.86)18.1秒(9.24)18.6秒(7.66)17.8秒(7.84)
2022.9秒(10.00)19.4秒(9.37)19.4秒(6.38)16.6秒(10.07)16.8秒(8.48)16.3秒(8.56)

表2-9-3をグラフにしたものが図2-9-2です。
これからテスト環境2とテスト環境3では以下のことがわかります。


図2-9-2 スレッド数と計算時間の関係(テスト環境2:gcc, テスト環境3:icc)