Fedora 10 x86_64でPC GAMESS/Firefly
OpenMPIを使って、Fedora 10上でPC GAMESS/Fireflyによる並列計算をできるようにしました。
以下、備忘録。
[必要なもの]
・FireflyのOpenMPI用バイナリ
・OpenMPI(本体/ライブラリ(x86_64とi386))
[手順]
・OpenMPIのインストール
・DLしたFireflyを適当なディレクトリに展開
・例えば下記のようなシェルスクリプトで計算を実行
#!/bin/csh
set exedir=/tmp/pcg71e
set datadir=$PWD
set tmpdir=/tmp/pcg71e_temp
# setenv LD_LIBRARY_PATH /usr/lib64/openmpi/1.2.4-gcc
foreach INPF (*.inp)
mpirun -np 4 $exedir/pcgamess -i $datadir/$INPF -o $datadir/$INPF:r.log -t $tmpdir
mv $tmpdir.0/PUNCH $datadir/$INPF:r.pun
end
上記のシェルスクリプトは最も単純化したもので、入力ファイルと同じディレクトリに置いて実行するタイプです(ディレクトリ内の「.inp」ファイルを順番に実行する)。
LD_LIBRARY_PATHの設定は.cshrcで設定しておけばいいと思います(私は環境設定で手探りだったときにこのシェルスクリプトで設定していました…後で必要なくなってコメントアウト)。
OpenMPIのライブラリについては本当にx86_64とx86(i386)が両方必要なのかはわかりませんが、x86_64のみのインストールだと計算できません(Fireflyがx86のライブラリを必要とするためだと思われ)。
ちなみにバイナリは32bitなので、Fedora上でコンパイルしたGAMESS(64bit)のように1000MWなんてメモリは使えません。実測で最大460MW(3.7GB)。半分くらいで、まさに32bitの制約ですね。GAMESS(US)よりもMP2,DFTともに速いので、構造最適化なんかで重宝しそうです。
[20:15追記]
fastdiag.exとpcgp2p.exは各ノード(私の例では「pcg71e_temp.0」~「pcg71e_temp.3」という名前の4つのディレクトリ)に入れておく必要があります。