前回、 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。
PGI | Intel | |
---|---|---|
1thread | 61min | 63min |
2threads | 66min | 69min |
PGI | Intel | |
---|---|---|
without | 586 | 506 |
with Fourier | 487 | 443 |
プログラム乙。
3次元の直行メッシュ上の計算。時間発展。
PGI | Intel | |
---|---|---|
32x32x16mesh x 50000step | 595.83 | 587.73 |
64x64x64mesh x 3000step | 621.76 | 620.33 |
う?ん?
なんだ?この結果。タマに Intel が速いこともあるけど、いいとこ1割ちょいだなぁ。それ以上に、 Intel が有利になるケースがまったく読めない。
3次元メッシュのプログラムはこの時のやつだな…。