GCC, PGI, Intel コンパイラ対決 at OSX 2

前回、 Intel compiler が PGI に2倍の差をつけて圧勝だったので、タマタマじゃネーの?ってことで他のプログラムで検証。GCCは面倒なのでパス

program 甲
前回のものと同種のプログラムだが、なにせ大昔に書いたもので機能もテンコ盛りで非常に複雑。洒落で OpenMP も埋めてあるけど、見れば判るように全く効いてない。Fourier 変換は手製。Fourier変換の有無では計算回数が7万vs5万で違っているので比較する時はその比で割って。

ちなみに、Intel で作ったバイナリは、環境変数なしだと勝手に 3 thread で動作していてこれが2並列、明示的に OMP_NUM_THREADS=1 とするとこれが 2 thread になる(管理用に1 thread 消費)。PGI では環境変数なしで 1thread 、OMP_NUM_THREADS=2で 2 thread。

プログラム甲 with ターゲットA。実行時間/単位分
PGIIntel
1thread61min63min
2threads66min69min

プログラム甲 with ターゲットB。実行時間/単位秒
PGIIntel
without586506
with Fourier487443

プログラム乙。
3次元の直行メッシュ上の計算。時間発展。

プログラム乙。実行時間/単位秒
PGIIntel
32x32x16mesh x 50000step595.83587.73
64x64x64mesh x 3000step621.76620.33

う?ん?
なんだ?この結果。タマに Intel が速いこともあるけど、いいとこ1割ちょいだなぁ。それ以上に、 Intel が有利になるケースがまったく読めない。

3次元メッシュのプログラムはこの時のやつだな…。


23:30:00 - 10.07.09 - kuroyagi - その他雑記 - 3884x