#!/bin/sh
#PBS -q chem <-- 使用するqueue名
#PBS -l nodes=3:ppn=2 <-- そのqueueのリソースの中で使用するノードの数と1ノード当たりで使用するcoreの数
#PBS -j oe <-- 結果を標準出力、標準エラーともに出力する場合oe
#PBS -N sample jobs <-- qstat 時に「Name」欄に表示される名称。ただし先頭から空白まで
# start time
/usr/bin/date '+%y%m%d %H%M%S'
SECONDS=0
$PBS_O_WORKDIR <-- 計算を実施する場所に移って
export LD_LIBRARY_PATH=/Appl/relion/lib:/Appl/local/openmpi-1.10_gcc-4.8/lib <-- 環境変数を定義
mpirun -np 4 ..... <-- 実際の計算内容
# end time
/usr/bin/date '+%y%m%d %H%M%S'
echo $SECONDS Seconds <-- このスクリプトの処理に掛かった時間を示します
printf "%02d:%02d:%02d\n" $(($SECONDS/3600)) $((($SECONDS%3600)/60)) $(($SECONDS%60)) <-- 経過時間を「HH:MM:SS」で表記#!/bin/sh
#PBS -q chem
#PBS -l nodes=3:ppn=2
#PBS -j oe
# start time
/usr/bin/date '+%y%m%d %H%M%S'
$PBS_O_WORKDIR
export LD_LIBRARY_PATH=/Appl/relion/lib:/Appl/local/openmpi-1.10_gcc-4.8/lib
mpirun -np 4 ..... $PBS_ARRAYID
# end time
/usr/bin/date '+%y%m%d %H%M%S'「qsub -t 0,1,2,3 script.sh」
発行されるジョブは一つであるが、スクリプト中の$PBS_ARRAYID に「0」が入った計算を行った後に、
「1」の入った計算、「2」の入った計算「3」の値が入った計算と連続的に行う(数字のみ扱える)
単純にスクリプトの中に for loopを用いればいいのかも知れませんが、上記に従うと特定の変数に対して
qalter(ジョブの変更)、qdel(ジョブのkill)、qhold(ジョブの一時停止)、qrls(ジョブの再開)らが可能
「qdel 1999[1].c」とか
#!/bin/sh
#PBS -q chem
#PBS -l nodes=3:ppn=2
#PBS -j oe
# start time
/usr/bin/date '+%y%m%d %H%M%S'
$PBS_O_WORKDIR
export LD_LIBRARY_PATH=/Appl/relion/lib:/Appl/local/openmpi-1.10_gcc-4.8/lib
mpirun -np 4 ..... ${IN} ${OUT}
# end time
/usr/bin/date '+%y%m%d %H%M%S'「qsub script.sh -t IN=input.dat,OUT=out.txt」
「-t」を用いることでスクリプト内の変数に値を入られてます。