2. Amberの使用方法¶
Info
本ページのコマンドライン例では、以下の表記を使用します。
[login]$ : ログインノード
[rNnN]$ : 計算ノード
[login/rNnN]$ : ログインノードまたは計算ノード
[yourPC]$ : ログインノードへの接続元環境
2.1. Amberの実行¶
2.1.1. インタラクティブ実行¶
ログイン方法を参考にログインノードにログイン後、インタラクティブノードを利用したX転送を参考にノードをX転送付きで確保するか、Open OnDemandを利用して計算ノードにログインしてください。
以下以降の例では、全て計算ノードにログインした状態で行います。
2.1.1.1. CUI実行¶
以下はあくまでもコマンドサンプルです。実際の計算にはmdin,prmtop,inpcrdなどのインプットファイルや初期パラメータを記載したファイルが必要となります。
(1) インタラクティブでの逐次処理の場合の利用手順を以下に示します。
[rNnN]$ cd <利用したいディレクトリ>
[rNnN]$ module purge
[rNnN]$ module load amber
[rNnN]$ sander [-O|A] -i mdin -o mdout -p prmtop -c inpcrd -r restrt
(2) インタラクティブでの並列処理(sander.MPI)の場合の利用手順を以下に示します。
[rNnN]$ cd <利用したいディレクトリ>
[rNnN]$ module purge
[rNnN]$ module load amber
[rNnN]$ mpirun -np [並列数] -x LD_LIBRARY_PATH sander.MPI [-O|A] -i mdin -o mdout -p prmtop -c inpcrd -r restrt
(3) インタラクティブでのGPU逐次処理(pmemd.cuda)の場合の利用手順を以下に示します。
[rNnN]$ cd <利用したいディレクトリ>
[rNnN]$ module purge
[rNnN]$ module load amber
[rNnN]$ pmemd.cuda [-O] -i mdin -o mdout -p prmtop -c inpcrd -r restrt
(4) インタラクティブでのGPU並列処理(pmemd.cuda.MPI)の場合の利用手順を以下に示します。
[rNnN]$ cd <利用したいディレクトリ>
[rNnN]$ module purge
[rNnN]$ module load amber
[rNnN]$ mpirun -np [並列数] -x LD_LIBRARY_PATH pmemd.cuda.MPI [-O] -i mdin -o mdout -p prmtop -c inpcrd -r restrt
2.1.1.2. GUI実行¶
例では2時間接続で、割り当てノードとしてr1n11が割り当てられた場合を想定しております。
割り当てノードはコマンド実行時に空いているノードですので、明示的にノードを指定することはできません。
qrshの実行¶
[login]$ qrsh -g [TSUBAMEグループ] -l s_core=1 -l h_rt=2:00:00
[rNnN]$ module purge
[rNnN]$ module load amber
[rNnN]$ xleap
-I: Adding /apps/t4/rhel9/isv/amber/22up05_ambertools23up06/dat/leap/prep to search path.
-I: Adding /apps/t4/rhel9/isv/amber/22up05_ambertools23up06/dat/leap/lib to search path.
-I: Adding /apps/t4/rhel9/isv/amber/22up05_ambertools23up06/dat/leap/parm to search path.
-I: Adding /apps/t4/rhel9/isv/amber/22up05_ambertools23up06/dat/leap/cmd to search path.
**xleapの画面**
2.1.2. バッチジョブスケジューラーAGEによる実行¶
以下はあくまでもコマンドサンプルです。
実際の計算にはprmtop,inpcrdなどの初期パラメータを記載したファイルが必要となります。
バッチキューシステムの場合の利用手順を以下に示します。
[login]$ cd <利用したいディレクトリ>
[login]$ qsub parallel.sh # parallel.shを利用する場合
スクリプト例:CPU並列処理
#!/bin/bash
#プライオリティ
#$ -p -5
#実行ディレクトリ:カレントディレクトリ
#$ -cwd
#$ -N amber_parallel_test_job #job名
#送信先メールアドレス
#$ -M ambertest[at]o.cc.titech.ac.jp
#エラーメッセージファイル名、設定なしだとスクリプト.e.JOBID
#$ -e uge.err
#標準出力ファイル名、設定なしだとスクリプト.o.JOBID
#$ -o uge.out
#*必須:資源タイプの指定
#$ -l node_h=2
#*必須:時間指定
#$ -l h_rt=0:10:00
#$ -V
#CPU数の設定と設定の出力
export NSLOTS=28
echo Running on host `hostname`
echo "UGE job id: $JOB_ID"
echo Time is `date`
echo Directory is `pwd`
echo This job runs on the following processors:
echo This job has allocated $NSLOTS processors
#利用ファイルの指定
in=./mdin
out=./mdout_para
inpcrd=./inpcrd
top=./top
#インプットファイルをスクリプト内に書き込む場合の処理
cat <<eof > $in
Relaxtion of trip cage using
&cntrl
imin=1,maxcyc=5000,irest=0, ntx=1,
nstlim=10, dt=0.001,
ntc=1, ntf=1, ioutfm=1
ntt=9, tautp=0.5,
tempi=298.0, temp0=298.0,
ntpr=1, ntwx=20,
ntb=0, igb=8,
nkija=3, gamma_ln=0.01,
cut=999.0,rgbmax=999.0,
idistr=0
/
eof
#モジュールの呼び出し
module purge
module load amber
#sander.mpiの実行
mpirun -np $NSLOTS -x LD_LIBRARY_PATH \
sander.MPI -O -i $in -c $inpcrd -p $top -o $out < /dev/null
#不必要なファイルの削除
/bin/rm -f $in restrt
スクリプト例:GPU並列処理
#!/bin/bash
#$ -p -5
#$ -cwd
#$ -N amber_cuda_parallel_test_job
#$ -m e
#$ -e uge.err
#$ -o uge.out
#$ -l node_h=2
#$ -l h_rt=0:30:0
#$ -V
export NSLOTS=8
echo Running on host `hostname`
echo "UGE job id: $JOB_ID"
echo Time is `date`
echo Directory is `pwd`
echo This job runs on the following GPUs:
echo This job has allocated $NSLOTS GPUs
in=./mdin
out=./mdout
inpcrd=./inpcrd
top=./top
cat <<eof > $in
FIX (active) full dynamics ( constraint dynamics: constant volume)
&cntrl
ntx = 7, irest = 1,
ntpr = 100, ntwx = 0, ntwr = 0,
ntf = 2, ntc = 2, tol = 0.000001,
cut = 8.0,
nstlim = 500, dt = 0.00150,
nscm = 250,
ntt = 0,
lastist = 4000000,
lastrst = 6000000,
/
eof
module purge
module load amber
mpirun -np $NSLOTS -x LD_LIBRARY_PATH \
pmemd.cuda.MPI -O -i $in -c $inpcrd -p $top -o $out < /dev/null
/bin/rm -f $in restrt