最終更新: 2021/2/26
RCCS では共通領域に導入したアプリケーションについて、サンプルジョブスクリプトを用意しています。
RCCS で用意したものをそのまま使う場合はもちろん、自身のディレクトリに導入した別バージョンを使う際のテンプレートとしても利用できます。
以下では Gromacs と GAMESS を例にして、サンプルをどのように実行するのかを説明します。
なお、Gaussian については、専用の g16sub/g09sub を用いた方法をまずはご覧ください。
いくつかの方法があります。
パッケージプログラム一覧のページに掲載されている情報で確認できます。
以下のように出力されます。通常、ジョブとして投入するようなアプリについては以下で赤で示した apl_ex 内にあります。
[user@ccfep4 ~]$ module avail
------------------------------- /local/apl/lx/modules/suite -------------------------------
intel_parallelstudio/2015update1 intel_parallelstudio/2020update2
intel_parallelstudio/2017update4 scl/devtoolset-3
(中略)------------------------------- /local/apl/lx/modules/comp --------------------------------
cuda/10.1 intel/15.0.1 intel/19.0.1 pgi/16.5
cuda/11.1 intel/17.0.4 intel/19.0.5 pgi/17.5
cuda/7.5 intel/17.0.8 intel/19.1.2 pgi/18.1(default)
cuda/8.0 intel/18.0.2 julia/1.3.1 pgi/20.4
cuda/9.1(default) intel/18.0.5(default) julia/1.5.3-------------------------------- /local/apl/lx/modules/apl --------------------------------
mpi/intelmpi/2017.3.196 mpi/openmpi/2.1.3/intel19 mpi/openmpi/4.0.0/gnu8.3
mpi/intelmpi/2017.4.262 mpi/openmpi/3.1.0/gnu4.8 mpi/openmpi/4.0.0/intel15
(中略)------------------------------ /local/apl/lx/modules/apl_ex -------------------------------
GRRM/11-g09 gromacs/2018.7/gnu
GRRM/14-g09(default) gromacs/2018.7/gnu-CUDA
GRRM/17-g09 gromacs/2018.7/intel
GRRM/17-g16 gromacs/2018.7/intel-CUDA
abinit/7.8.2 gromacs/2018.8/gnu
abinit/8.8.3(default) gromacs/2018.8/gnu-CUDA
amber/16/bugfix10 gromacs/2018.8/intel
amber/16/bugfix15 gromacs/2018.8/intel-CUDA
amber/18/bugfix1 gromacs/2019.2/gnu
amber/18/bugfix11-volta gromacs/2019.2/gnu-CUDA
(中略)
gromacs/2018.3/gnu-CUDA turbomole/7.4-serial
gromacs/2018.3/intel turbomole/7.4.1-MPI(default)
gromacs/2018.3/intel-CUDA turbomole/7.4.1-SMP
gromacs/2018.6/gnu turbomole/7.4.1-serial
gromacs/2018.6/gnu-CUDA turbomole/7.5-MPI
gromacs/2018.6/intel turbomole/7.5-SMP
gromacs/2018.6/intel-CUDA turbomole/7.5-serial---------------------------- /local/apl/lx/modules/apl_viewer -----------------------------
luscus/0.8.6 molden/5.7 nboview/2.0 vmd/1.9.3----------------------------- /local/apl/lx/modules/apl_util ------------------------------
allinea/7.1 cmake/3.16.3
cmake/2.8.12.2(default) cmake/3.8.2-------------------------------- /local/apl/lx/modules/lib --------------------------------
boost/1.53.0(default) mkl/2017.0.4 mkl/2020.0.2
boost/1.59.0 mkl/2018.0.2 nccl/2.3.7-1+cuda9.1(default)
boost/1.70.0 mkl/2018.0.4(default) spglib/1.11.1(default)
mkl/11.2.1 mkl/2019.0.1
mkl/2017.0.3 mkl/2019.0.5------------------------------- /local/apl/lx/modules/misc --------------------------------
inteldev intellic pgilic
[user@ccfep4 ~]$
OS 非標準のアプリやライブラリについては、/local/apl/lx に導入されています。そちらで直接確認することもできます。
[user@ccfep4 ~]$ ls /local/apl/lx
GRRM@ gromacs2016.5-gnu/ nbo6018mod/
GRRM11/ gromacs2016.5-gnu-CUDA@ nbo70@
GRRM14/ gromacs2016.5-gnu-CUDA8/ nbo702/
GRRM17/ gromacs2016.6/ nbo702-i4/
abinit@ gromacs2016.6-CUDA/ nbo707/
abinit782/ gromacs2016.6-gnu/ nbo707-i4/
abinit883/ gromacs2016.6-gnu-CUDA/ nbopro7/
(中略)
gromacs2016.4/ namd213/ wine30/
gromacs2016.4-CUDA/ namd213-CUDA/ wine30-win64/
gromacs2016.5/ nbo60@ wine40-win64/
gromacs2016.5-CUDA@ nbo6015/
gromacs2016.5-CUDA9/ nbo6018/
[user@ccfep4 ~]$
(一部はシンボリックリンクになっています。)
module の場合は module help (パッケージ名) を実行すると、出力にサンプルのディレクトリ名があります。
あるいは /local/apl/lx 以下でパッケージのディレクトリ(通常は(パッケージ名)(バージョン名)という名前になっています)を
探し、その直下にある samples/ ディレクトリに行っても大丈夫です。
例1: module help で GAMESS 2019Sep30 のサンプルディレクトリを探す
[user@ccfep4 ~]$ module help gamess/2019Sep30
(省略)
Doc(local): /local/apl/lx/gamess2019Sep30/INPUT.DOCSAMPLES:
/local/apl/lx/gamess2019Sep30/samplesINFO:
(省略)
[user@ccfep4 ~]$ cd /local/apl/lx/gamess2019Sep30/samples
[user@ccfep4 samples]$ ls
exam01.inp sample.csh
[user@ccfep4 samples]$
例2: gromacs 2019.6 のサンプルを /local/apl/lx から探す
[user@ccfep4 ~]$ cd /local/apl/lx
[user@ccfep4 lx]$ ls -d gromacs*
gromacs gromacs2018.3-CUDA gromacs2019.4-gnu-CUDA
gromacs2016 gromacs2018.3-gnu gromacs2019.6
gromacs2016.1 gromacs2018.3-gnu-CUDA gromacs2019.6-CUDA
gromacs2016.1-CUDA gromacs2018.6 gromacs2019.6-gnu
gromacs2016.3 gromacs2018.6-CUDA gromacs2019.6-gnu-CUDA
gromacs2016.3-CUDA gromacs2018.6-gnu gromacs2020.2
(省略)
[user@ccfep4 lx]$ cd gromacs2019.6/samples
[user@ccfep4 samples]$ ls
conf.gro sample-mpi-module.sh sample-threadmpi-module.csh sample-threadmpi.sh
grompp.mdp sample-mpi.csh sample-threadmpi-module.sh topol.top
sample-mpi-module.csh sample-mpi.sh sample-threadmpi.csh
[user@ccfep4 samples]$
(-CUDA がついているものは GPU 版です。-gnu がついているものは GCC でビルド、ついていないものは intel compiler でビルドしています。)
サンプルディレクトリ内でインプットそのものは原則一つです。
ただし、それを実行するためのジョブスクリプトについては複数ある場合があります。
例えば、シェルが違う場合、並列方式が違う場合、設定の読み込み方法が違う場合、GPU利用の有無などが挙げられます。
必要に応じて中身を比較するなどしてください。
既に上で示したように、実行スクリプトは sample.csh の一つだけです。
[user@ccfep4 samples]$ ls
exam01.inp sample.csh
こちらは実行スクリプトがたくさんあります。が、インプットファイルは 1 セットだけです。
[user@ccfep4 samples]$ ls
conf.gro sample-mpi-module.sh sample-threadmpi-module.csh sample-threadmpi.sh
grompp.mdp sample-mpi.csh sample-threadmpi-module.sh topol.top
sample-mpi-module.csh sample-mpi.sh sample-threadmpi.csh
サンプルを ~/gamess2019Sep30_test で実行する場合です。
[user@ccfep4 ~]$ mkdir -p ~/gamess2019Sep30_test
[user@ccfep4 ~]$ cd ~/gamess2019Sep30_test
[user@ccfep4 gamess2019Sep30_test]$ cp /local/apl/lx/gamess2019Sep30/samples/* .
[user@ccfep4 gamess2019Sep30_test]$ ls
exam01.inp sample.csh
[user@ccfep4 gamess2019Sep30_test]$ jsub -q PN sample.csh
4685953.cccms1
混雑していなければ、しばらく待てばジョブが終了し、出力結果が得られます。
[user@ccfep4 gamess2019Sep30_test]$ ls ~/gamess2019Sep30_test
exam01.dat exam01.log sample.csh* sample.csh.o4685953
exam01.inp nodefile-4685953.cccms1 sample.csh.e4685953
[user@ccfep4 gamess2019Sep30_test]$
参考: sample.csh の中身について(青文字は説明文で、本来のファイルに含まれない部分です)
#!/bin/csh -f
#PBS -l select=1:ncpus=4:mpiprocs=4:ompthreads=1:jobtype=core # <= 1 ノード, 4 コア
#PBS -l walltime=24:00:00 # <= 制限時間は 24 時間
#
# Gamess is compiled with sockets and OpenMP enabled.
#
if ($?PBS_O_WORKDIR) then
cd ${PBS_O_WORKDIR} # <= jsub で投入する場合はこの文を入れて投入したディレクトリに移動する必要有
endifset gamess = gamess2019Sep30
set RUNGMS = /local/apl/lx/${gamess}/rungms # <= GAMESS の設定とインプットファイルの指定
set INPUT = exam01.inpif ($?PBS_O_WORKDIR) then
set nproc="nodefile-${PBS_JOBID}" # <= jsub 時のノードリスト指定
uniq -c ${PBS_NODEFILE} | sed 's/^ *\([0-9]*\) *\(.*\)$/\2 \1/' > $nproc
else
set nproc=4 # <= 直接実行時のコア数指定(4コア)
setenv OMP_NUM_THREADS 1
endif
${RUNGMS} ${INPUT:r} 00 $nproc >& ${INPUT:r}.log
この gamess は socket 並列でビルドしていて MPI を利用していませんが、ノードリスト(PBS_NODEFILE)を利用するために MPI 並列として(mpiprocs=4)実行しています。
サンプルを ~/gromacs2019.6_test で実行する場合です。
[user@ccfep4 ~]$ mkdir -p ~/gromacs2019.6_test
[user@ccfep4 ~]$ cd ~/gromacs2019.6_test
[user@ccfep4 gromacs2019.6_test]$ cp /local/apl/lx/gromacs2019.6/samples/* .
[user@ccfep4 gromacs2019.6_test]$ ls
conf.gro sample-mpi-module.sh sample-threadmpi-module.csh sample-threadmpi.sh
grompp.mdp sample-mpi.csh sample-threadmpi-module.sh topol.top
sample-mpi-module.csh sample-mpi.sh sample-threadmpi.csh
[user@ccfep4 gromacs2019.6_test]$ jsub -q PN sample-mpi.sh
4684922.cccms1
混雑していなければ、しばらく待てばジョブが終了し、出力結果が得られます。
[user@ccfep4 gromacs2019.6_test]$ ls ~/gromacs2019.6_test
conf.gro mdout.mdp sample-mpi.csh state.cpt
confout.gro mdrun.out sample-mpi.sh topol.top
ener.edr sample-mpi-module.csh sample-threadmpi-module.csh topol.tpr
grompp.mdp sample-mpi-module.csh.e4684922 sample-threadmpi-module.sh traj.trr
grompp.out sample-mpi-module.csh.o4684922 sample-threadmpi.csh
md.log sample-mpi-module.sh sample-threadmpi.sh
[user@ccfep4 gromacs2019.6_test]$
参考: sample-mpi.sh の中身(青文字は説明文で、本来のファイルに含まれない部分です)
#!/bin/sh
#PBS -l select=1:ncpus=6:mpiprocs=6:ompthreads=1:jobtype=core # <= 6 MPI * 1 OMP
#PBS -l walltime=00:30:00 # <= 制限時間 30 分if [ ! -z "${PBS_O_WORKDIR}" ]; then
cd "${PBS_O_WORKDIR}" # <= jsub で投入時は jsub を実行したディレクトリに移動します
fi. /local/apl/lx/gromacs2019.6/bin/GMXRC # <= gromacs 環境設定読み込み
##############################################################################
N_MPI=6 # <= MPI 並列数; 上記の mpiprocs に合わせる
N_OMP=1 # <= OpenMP 並列数; 上記の ompthreads に合わせるgmx_d grompp -f grompp.mdp >& grompp.out
mpirun -n ${N_MPI} gmx_mpi mdrun -ntomp ${N_OMP} -s topol >& mdrun.out
https://ccportal.ims.ac.jp/node/2376 に select 文のサンプルや簡単な説明があります。