Show page source of コンパイラを変えるだけでパフォーマンス向上、インテル_コンパイラーの実力を見る_p4 #49513

[[PageNavi(NavigationList)]]


==== 作成したプログラムのパフォーマンスを比較する ====
 それでは、以上のようにして作成したプログラムを、Visual C++やGCCでコンパイルしたプログラムと比較してみよう。プログラムのパラメータはn=400およびm=100、つまり「400×400サイズの行列を100回乗算する」に設定した。また、実行時間の計測にはclock()関数を使用し、プログラムを開始した直後から終了する直前までの経過時間を計測している。

 テストプログラムのコンパイルおよび実行に使用したのは、CPUとしてCore 2 Duoを搭載したWindows Vistaマシンだ('''表1''')。コンパイラとしてはインテル C++ コンパイラーおよびVisual Studio 2008付属のC++コンパイラ、[http://www.cygwin.com/ Cygwin]でインストールしたGCC 3およびGCC 4を用意し、それぞれでコンパイルしたプログラムを比較する。また、インテル C++ コンパイラーについては並列化の効果を確認するため、自動並列化を有効にしたものと、無効にしたものを用意した。それぞれのコンパイルオプションは'''図7~9'''および'''リスト2'''のように設定している。

 なお、インテル C++ コンパイラーで並列化オプションを有効にした場合、デフォルトでは確実に高速化できる個所のみ自動並列化を行うが、「/Qpar-theshold」オプションを併用することで、自動並列化を行う閾値を変更できる。今回は'''図9'''のように閾値を「0」に設定し、並列化が行える個所はすべて並列化するように指定した。

[[Thumb(80e9f22d8f96483eca0a348b3323d295.png, caption=図7 インテル C++ コンパイラの最適化オプション設定(並列化なし))]]

[[Thumb(51c9bab8141d2a769c03a7f59f0b2e33.png, caption=図8 インテル C++ コンパイラの最適化オプション設定(並列化あり))]]

[[Thumb(b31b6ec6b5c1bd83bdc7b8d00e389eb4.png, caption=図9 インテル C++ コンパイラの追加オプション設定画面)]]

[[Thumb(7d86175845b3746f394b1c420a9264fa.png, caption=図10 Visual C++の最適化オプション設定)]]

====== リスト2 GCC 3およびGCC 4のコンパイル ======

{{{
↓GCC 3で最適化レベル2、Pentium 4系CPUに向けた最適化を指定してコンパイル gcc.exe -O2 -march=nocona -o matrix1_gcc3_O2.exe matrix1.c
 :
↓GCC 3で最適化レベル3、Pentium 4系CPUに向けた最適化を指定してコンパイル gcc.exe -O3 -march=nocona -o matrix1_gcc3_03.exe matrix1.c
 :
↓GCC 4で最適化レベル2、Core 2系CPUに向けた最適化を指定してコンパイル gcc-4.exe -O2 -march=core2 -o matrix1_gcc4_02.exe matrix1.c
 :
↓GCC 4で最適化レベル3、Core 2系CPUに向けた最適化を指定してコンパイル gcc-4.exe -O3 -march=core2 -o matrix1_gcc4_O3.exe matrix1.c
 :
}}}



[[PageNavi(NavigationList)]]