3.2. 実行スクリプトの書式¶
プログラムを動作させる際に使用する実行スクリプトの書式について説明します。実行スクリプトを必要とするアプリケーションを実行する際は、事前に実行スクリプトを作成しておく必要があります。
3.2.1. MPI を使用しないジョブの実行¶
#!/bin/sh
#PBS -l select=1
#PBS -q キュー名
#PBS -N ジョブ名
cd $PBS_O_WORKDIR
実行プログラム > 出力ファイル 2> エラー出力ファイル
・例 プログラムa.outを実行
#!/bin/sh
#PBS -l select=1
#PBS -q CP_001
#PBS -N sample
cd $PBS_O_WORKDIR
./a.out > result.out 2> result.err
3.2.2. MPI を使用したジョブの実行¶
#!/bin/sh
#PBS -l select=ノード数:ncpus=コア数:mem=メモリ量gb
#PBS -l walltime=実行時間
#PBS -q キュー名
#PBS -N ジョブ名
cd $PBS_O_WORKDIR
mpirun [ -np 並列数 | -ppn ノードあたりの並列数 ]
実行プログラム > 出力ファイル 2> エラー出力ファイル
・例 Intelコンパイラでコンパイルしたプログラムa.outを共有キューで、8MPIプロセス、メモリ32GB、walltime 1時間で実行
#!/bin/sh
#PBS -l select=1:ncpus=8:mem=32gb
#PBS -l walltime=01:00:00
#PBS -q CP_001
#PBS -N mpi
module load oneapi
cd $PBS_O_WORKDIR
mpirun -np 8 ./a.out > result.out 2> result.err
・例 Intelコンパイラでコンパイルしたプログラムa.outを2ノード、ノード当たり112MPIプロセスで実行
#!/bin/sh
#PBS -l select=2
#PBS -q CP_030
#PBS -N mpi
module load oneapi
cd $PBS_O_WORKDIR
mpirun -np 224 -ppn 112 ./a.out > result.out 2> result.err
3.2.3. アクセラレータを使用したジョブの実行¶
#!/bin/sh
#PBS -l select=ノード数:ncpus=コア数:ngpus=GPU数:mem=メモリ量gb
#PBS -l walltime=実行時間
#PBS -q キュー名
#PBS -N ジョブ名
cd $PBS_O_WORKDIR
mpirun [ -np 並列数 | -ppn ノードあたりの並列数 ]
実行プログラム > 出力ファイル 2> エラー出力ファイル
・例 NVIDIA HPCコンパイラでコンパイルしたプログラムa.outを2MPIプロセス、2GPU、メモリ64GB、walltime 30分で実行
#!/bin/sh
#PBS -l select=1:ncpus=2:ngpus=2:mem=64gb
#PBS -l walltime=00:30:00
#PBS -q CA_001
#PBS -N mpi
module load nvhpc
cd $PBS_O_WORKDIR
mpirun -np 4 -hostfile $PBS_NODEFILE -x LD_LIBRARY_PATH -x HCOLL_MAIN_IB=all ./a.out > result.out 2> result.err