バッチジョブ
バッチジョブの使い方
CPU コアを 1 コアだけ使用し長時間実行するプログラムを少数実行する場合は、バッチジョブとして実行してください。(多数実行する場合は後述するアレイジョブを使ってください。)
例えば以下のようなシェルスクリプト(example.sh)を実行したいとします。(このシェルスクリプトは遺伝研スパコンにインストールされている biotools Singularity コンテナのリストを生成します。)
#!/bin/bash
ls /usr/local/biotools > $1
以下のようなjob_script.sh
を用意し、qsub job_script.sh
を実行して下さい。
すると Grid Engine の待ち行列(キュー)にバッチジョブが投入(サブミット)されます。
#!/bin/bash
#$ -cwd
#$ -V
#$ -l short
#$ -l d_rt=00:10:00
#$ -l s_rt=00:10:00
#$ -l s_vmem=4G
#$ -l mem_req=4G
#$ -N an_example
#$ -S /bin/bash
example.sh biotools_list.txt
-cwd
: バッチジョブを現在のディレクトリ上で実行します。(指定しな いと$HOME
ディレクトリ上で実行されます。)-V
:qsub
を実行した際の環境変数を全てバッチジョブ(を実行する計算ノード)に引き継ぎます。l short
: バッチジョブを投入する待ち行列(キュー Queue)の種類を指定します。- 一般解析区画は計算機の種類ごとに
epyc
,intel
,gpu
,short
,medium
などのキューがあります。詳細はAGEキューの種類の項を参照下さい。 - 個人ゲノム解析区画の場合は構成によります。特に何も指定しなければ
all
キューのみ存在しますので-l all
を指定して下さい。
- 一般解析区画は計算機の種類ごとに
-l d_rt
,-l s_rt
: バッチジョブの実行上限時間。- バッチジョブの実行開始からこの実行上限時間をすぎるとバッチジョブは強制終了させられます。
- したがって実行時間の上限は少し長めに書いたほうが安全ですが、長すぎるとジョブがなかなか実行されなくなるがあります。
- この例
00:10:00
では 10分を指定しています。 - 例えば 8 日以内にジョブが終了する見込みであるから最大 8 日間のジョブ実行枠を指定する、といった場合には、オプションに 192 時間(8 日×24 時間)
192:00:00
を指定して下さい。 - 最大は 2976 時間=約 4 ヶ月です。(ただし
short
キューは 1 時間。) - このオプションを指定しないと(デフォルト値) 72 時間=3 日が指定されます。
-l d_rt
オプションと-l s_rt
オプションには同じ値を指定する必要があります。
-l s_vmem
,-l mem_req
: 使用するメモリ量の指定です。通常は-l s_vmem
,-l mem_req
に同じ値を指定してください。単位は G,M,K 等が使えます。-N
: ジョブ名の指定です。-S
: スクリプト(この例の場合example.sh
)を実行する際に使われるインタプリタの指定です。