こちらで取り扱っている実験を Graph500 についても行ってみた。
どうせなので ICC の -xHost オプションだけではなく、GCC or ICC と -Ox の最適化の組合せを色々試してみることにした。
この実装でも -xHost の効果は大きいものの、上位を gcc が占めることになった。
メモリアクセスの流れを整える等のある程度汎用的な高速化を行った実装では icc < gcc といえるだろう。
また、gcc では最適化レベル毎に生成されるバイナリサイズが大きくなるのに対して、
icc では O1 が最も小さい(しかも median TEPS が高い)という結果になっており、少々予想しづらく感じる。
"compiler" "median TEPS" MB "icc -O0" 5.245 1.8503 "icc -O1" 9.987 1.7305 "icc -O2" 9.977 1.8545 "icc -O3" 9.850 1.8552 "icc -xhost" 10.072 1.8084 "gcc -O0" 6.164 1.6580 "gcc -O1" 10.738 1.8706 "gcc -O2" 10.887 1.8792 "gcc -O3" 10.834 1.9028
◯ 計算サーバ: Intel Xeon SandyBridge-EP (64 HT-cores)
CPU : Intel Xeon E5-4640 (8-core 2.40GHz, 16MB cache, TDP:95w) x 4
Memory : 512GB ACTICA製HPC専用メモリ DDR3 1600Mhz (16GB x 32枚) x 32
OS : CentOS 6.3
※コメント投稿者のブログIDはブログ作成者のみに通知されます