PBS ジョブスクリプトのサンプル
サンプル置き場
ログインノードの /work/SAMPLES 以下にサンプルが置いてありますので, 自分のホームディレクトリ以下にコピーしてから使って下さい. 特に, Dockerfile は, コピーした後, 必要なライブラリを自分で追加すると良いです.
/work/SAMPLES CPU: c_mpihello.c c_mpihello.sh C言語 + MPI の例 c_omphello.c c_omphello.sh C言語 + OpenMP の例 mpihello.f90 mpihello.sh Fortran90 + MPI の例 omphello.f90 omphello.sh Fortran90 + OpenMP の例 Python-docker-chainer: chainer-sample.py job.sh chainer のサンプル Python-docker-tensorflow_1.5: job01.sh tensorflow1-sample-1.py tensorflow ver.1 のサンプル job02.sh tensorflow1-sample-2.py Python-venv: job01.sh tensorflow2-sample.py tensorflow のサンプル job02.sh pytorch-sample.py pytorch のサンプル
スクリプトの書き方
ジョブスクリプトの先頭で, 以下のようにキューと利用する資源を指定する. select=1 は必ず書く必要がある.
#PBS -q <キュー> #PBS -l select=1:ngpus=<GPUの基数>:ncpus=<CPUコア数>:mpiprocs=<MPI並列数>:ompthreads=<OMP並列数> デフォルト値: ngpus = 0 ncpus = 1 mpiprocs = 1 ompthreads = 1 注意事項: ncpus = mpiprocs * ompthreads となるように指定すること
MPI で並列計算するためのジョブ. cpu キューを利用.
mpirun には -n オプション(並列数の指定)を行う必要はない. PBS の mpiprocs の数字がそのまま使われる.
#!/bin/sh #PBS -q cpu <= キューの指定 #PBS -l select=1:ncpus=8:mpiprocs=8 <= ncpus, mpiprocs に並列数を指定. select=1 の部分は変えないこと. cd $PBS_O_WORKDIR <= ジョブ投入したディレクトリへ移動 mpirun ./c_mpihello <= mpirun から実行する.
OpenMP で並列計算するためのジョブ. cpu キューを利用.
環境変数 OMP_NUM_THREADS を export する必要はない. PBS の ompthread の数字がそのまま使われる.
#!/bin/sh #PBS -q cpu <= キューの指定 #PBS -l select=1:ncpus=8:ompthreads=8 <= ncpus, ompthreads に並列数を指定. select=1 の部分は変えないこと. cd $PBS_O_WORKDIR <= ジョブ投入したディレクトリへ移動 ./c_omphello <= コマンド
MPI + OpenMP で並列計算するためのジョブ. cpu キューを利用.
mpirun には -n オプション(並列数の指定)を行う必要はない. PBS の mpiprocs の数字がそのまま使われる. また, 環境変数 OMP_NUM_THREADS を export する必要はない. PBS の ompthread の数字がそのまま使われる.
#!/bin/sh #PBS -q cpu <= キューの指定 #PBS -l select=1:ncpus=8:mpiprocs=4:ompthreads=2 <= MPI 4 並列 x OMP 2 並列 = 8 並列で実行. select=1 の部分は変えないこと cd $PBS_O_WORKDIR <= ジョブ投入したディレクトリへ移動 mpirun ./c_omphello <= コマンド
venv をつかって GPU を用いた計算をする例. ngpus に 1 を指定する
#!/bin/sh #PBS -q gpu <= キューの指定 #PBS -l select=1:ncpus=1:ngpus=1 <= ncpus に CPU 数, ngpus に GPU 数を指定. GPU 数は 1 にすること. select の数字は変えない # ジョブを実行したディレクトリに移動 cd $PBS_O_WORKDIR # 開始処理. venv 環境をアクティベート. . /work/ENV/matsue-ct/venv/bin/activate # python プログラムの実行 python tensorflow2-sample.py # 終了処理. venv 環境をディアクティベート. deactivate
docker を使って GPU を用いた計算をする例. docker run を実行する.
mpirun には -n オプション(並列数の指定)を行う必要はない.
#!/bin/sh #PBS -q gpu <= キューの指定 #PBS -l select=1:ncpus=1:ngpus=1 <= ncpus に CPU 数, ngpus に GPU 数を指定. GPU 数は 1 にすること. select の数字は変えない # ジョブを投入したディレクトリに移動 cd $PBS_O_WORKDIR # docker コンテナを用いて実行 docker run --gpus all -v $PWD:/tmp -w /tmp --rm -u `id -u $USER` chainer/matsue-ct python3 chainer-sample.py -g 0
メール送信する場合
ジョブ実行時・終了時にメールを送る場合は ジョブファイルに -M, -m オプションを追記する. 但し, メールアドレスとして学内のものを指定すること. 学外のメールアドレスは使えません.
#PBS -M XXXX@matsue-ct.jp <= メールアドレスを指定 #PBS -m abe <= これは変えないで良い