2013-08-06

ifort で最近良く使うコンパイルオプション

ifort 2013 @ Linux の話。OpenMP 使う前提。使わない場合も -openmp を抜くだけで同じだと思うが。

メモリいっぱい使うとき


$ ifort foo.f90 -mcmodel=medium -openmp -shared-intel

なお、-shared-intel にすると -fast が使えない(-fast が -static を含むため。-fast の実態は複数のコンパイルオプションへのエイリアス。ifort -help opt を参照)。そこで最適化は

$ ifort foo.f90 -xHost -Ofast -ipo -mcmodel=medium -openmp -shared-intel

にする。要は -fast から -static を抜いたかたち。本番計算はこれでやってる。

デバッグ(ランタイムエラーを拾う)用


$ ifort foo.f90 -CB -traceback -g

なんだけど、実行が死ぬほど遅いから、実際には

$ ifort foo.f90 -CB -traceback -g -xHost -Ofast -ipo -mcmodel=medium -openmp -shared-intel

と全部入りにする。ただ、これやるとコンパイルがだいぶ遅くなるので場合によっては

$ ifort foo.f90 -CB -traceback -g -mcmodel=medium -openmp -shared-intel

だけにする(-O2の意味)。


UPDATE 2013-10-11

-shared-intel は、昔は -i-dynamic という名前だったようだ。ifort 11 まで、なのかな?
それから、-mcmodel=medium とイコールにしても、 -mcmodel medium と半角スペースにしてもどちらでも通るようだ。公式にはイコールになってる ので自分はイコールにしてるけども。
[/UPDATE]

No comments: