浮動小数点演算のクロック数計測(2) OpenMPあり・なし 【やってみた】


前回は、SSE2をON/OFFした時に浮動小数点演算の関数が高速化されているかどうかを比較してみましたが、今回は、OpenMPでマルチスレッド化(マルチコアCPU対応)を行った時に関数が高速されているかどうか、同様にクロック数を測定して比較してみます。

スポンサーリンク

Math Performance

前回のMath PerformanceにOpenMPを使ったマルチスレッド化コードをさらに追加して測定を行った(OpenMP使用時にスレッドが無尽蔵に増える問題にも対応している)。

Pentium-M

Pentium-M 1.3GHz、Windows XP ProfessionalのPCの測定結果

pentium-m_13.png

Pentium-Mの場合、ハイパースレッディングやマルチコアではないためマルチスレッド化の恩恵は特にない。若干性能が改善されているものはあるが、これはCPUのパイプラインのスループットが若干改善された影響かもしれない。ただし、増えているものもありこれはマルチスレッド化のコストが単に積み重なっただけのものであろう。

Core 2 Duo

Core 2 Duo 2.4GHz(E6600)、Windows XP ProfessionalのPCの測定結果

core2duo_24.png

他のCPUに比べ改善率が非常に(1.52倍)よい。また、クロック数を単に比較しても一番小さいことがわかる。さすが、本家マルチコアCPUといったところだろうか。

Xeon

Xeon 2.4GHz、Windows 2008 ServerのPCの測定結果

xeon_24.png

ハイパースレッディングに対応しているとのことだったが特に高速化されることはなく、マルチスレッド化によってそのコストが単に積み重なってしまっているようだった。もしくは、Windows 2008 ServerとOpenMPとの相性が悪いのかもしれない。

Athlon 64 x2

Athlon 64 x2 2.2GHz(4200+)、Windowx XP x64のPCの測定結果

athlon64x2_22.png

Core 2 Duoにはかなわないが、マルチコアCPUらしく多少(1.28倍)改善されているようである。関数の元々のクロック数が大きいものほど改善率がよいことがわかる。

以上のようにマルチコアCPUでマルチスレッド化の恩恵が非常に大きいことがわかる。

次回はデータ数の違いでの高速化を見てみたいと思う。

スポンサーリンク
カテゴリー: やってみた   パーマリンク

コメントは受け付けていません。