Sunday, October 10, 2010

【Rocks】ifortの-i_dynamic -mcmodel=mediumが使えない理由

静的に2GB以上のメモリ容量を必要とする配列宣言をする場合、ifortコンパイルオプションに次のように"-i_dynamic -mcmodel=medium"を加える必要がある。
ifort -i_dynamic -mcmodel=medium -o filename.out source.f90
MPICH2を用いる場合は、
mpif90 -f90=ifort -i_dynamic -mcmodel=medium -o filename.out source.f90
とする(簡単化のため、最適化オプションなどは書いていないことに注意)。

ただし、このようにしてコンパイルされた実行ファイルをMPICH2を使って実行しようとすると問題が生じる。
$ mpiexec -machinefile mf -n #processes ./filename.out
./filename.out: error while loading shared libraries: libifport.so.5: cannot open shared object file: No such file or directory

ifortのライブラリーである"libifport.so.5"がcompute nodeからアクセスすることができないというエラー。

原因は明白。ifortをインストールしたのはfront endの/opt以下のフォルダであり、compute nodeとは共有することができないから。

対策としては、ifortを/share/apps以下にインストールすればOK。

No comments:

Post a Comment