GAMESSをLinux環境でビルドします。対話形式のconfigを行い、makeを3回実行するだけです。
環境&準備
WSLで実施しますが、だいたいのLinux環境では同じ方法になるはずです。また、Intel OneAPIを使います。コンパイルや計算の際にはcshが要りますので、apt install tcsh
等で入れておきます。
GAMESSのインストーラの入手はこちらで解説しています。
手順
moduleでIntel OneAPIのコンパイラやMKLを読み込んでからconfigを実行します。
module load compiler/latest
module load mkl/latest
tar -xvf gamess-current.tar.gz
cd gamess
./config
対話形式で設定を行います。内容は以下の通り。
GMS_TARGET: linux64
GAMESS build directory: /home/wsl/gamess
Version: 00
FORTRAN: oneapi-ifx
math library: mkl
MKL pathname: /opt/intel/oneapi/mkl/2024.0
communication library: sockets
あとはだいたいno
config が終わると install.info が生成されます。
次にmakeします。
make ddi
make modules
make gamess
これが上手くいくと、
The linking of GAMESS to binary gamess.00.x was successful.
が表示され、gamess.00.x が出来上がります。
次にrungmsを編集します。下にスクロールしていくと
set TARGET=sockets
set SCR=~/gamess/restart
set USERSCR=~/gamess/restart
set GMSPATH=~/gamess
と書かれているところがあります。インストール場所を変更している場合はGMSPATHを書き換えます。SCRとUSERSCRは任意の場所でいいです。ディレクトリが作成されていない場合は作成しておきましょう。
runallで動作テスト
GAMESSのインストールディレクトリでrunallを実行します。runallではtest/standard内にあるinpファイルを全て実行しますが、49個あるにもかかわらず48個しか実行されない場合があります。なので先にrunallを少し書き換えます。
vi runall
#41行目の数値 48を
set Ntest=48
#49に書き換えます
set Ntest=49
そしてrunallコマンドを実行します。
./runall 00
./tests/standard/checktst
後ろの00はバージョン名で、この場合は gamess.00.x が動きます。
テスト計算が全て終わったらchecktstで結果を確認します。
全てがPassedになり、All 49 test results are correct! と表示されればOKです。
rungmsの使い方
実際にGAMESSの計算をする際に実行するスクリプトはrungmsです。これはインストールディレクトリにありますので、そのインストールディレクトリにPATHを通しておくとrungmsコマンドを動かすことができます。
rungms exam01.inp 00 1 > exam01.log
のような形式でコマンドを実行します。引数は<入力ファイル> <バージョン名> <並列数>です。これより増えるパターンもありますがあまり使わないと思います。
MPI版は上手くいかない
不可能ではないはずなのですが、上手くいきません。ビルドは上手くいき、rungmsファイル内を何か所か書き換える必要があるのも理解しているのですが、ダメです。計算実行時に以下のエラーが出ました。
mpiexec.hydra -f /home/wsl/installer/gamess/restart/exam01.processes.mpd
-n 2 /home/wsl/installer/gamess/gamess.00.x
[proxy:0:0@Iiyama] HYD_spawn (../../../../../src/pm/i_hydra/libhydra/spawn/intel/hydra_spawn.c:152):
execvp error on file aps (No such file or directory)
分からん!
コメント