452be89a |
---
title: バッチ処理
---
[toc]
## ジョブ実行の流れ{#execute_flow}
1. [ジョブスクリプトの作成](#jobscript)
2. [ジョブの投入](#submit)
3. (必要であれば)[ジョブの状態の確認](#squeue)
4. (必要であれば)[ジョブのキャンセル](#scancel)
## ジョブスクリプト{#jobscript}
ジョブスクリプトは、原則的にシェルスクリプトと同じ形式です。
ジョブスクリプトはSlurmのジョブ投入オプションを記述したオプション領域と、実行するプログラムを記述したユーザプログラム領域から構成されます。
ジョブ実行時に自動的に設定される環境変数については[こちら](/run/tips#env_val)をご参照ください。
### 4プロセスx 8スレッドのハイブリッド並列の例
ジョブスクリプトの一例を以下に示しますので、まずはスクリプトの内容を見て全体像を把握してください。
次節以降に、それぞれのより詳細な情報を記載しています。
```nohighlight
#!/bin/bash
#============ Slurm Options ===========
#SBATCH -p gr19999b # ジョブキュー(パーティション)の指定。投入したいキュー名に適宜変更が必要。
#SBATCH -t 1:00:00 # 経過時間の指定(1時間を指定する例)。
#SBATCH --rsc p=4:t=8:c=8:m=8G # 要求リソースの指定(4プロセスx8スレッドのハイブリッド並列の例)。
#SBATCH -o %x.%j.out # ジョブの標準出力ファイルの指定。%xはジョブ名、%j はジョブIDに置換されます。
#============ Shell Script ============
# (任意) set -x を指定するとジョブスクリプトの実行経過を把握しやすくなります。
set -x
# MPIのプロセス数やOMP_NUM_THREADS等の環境変数は--rscオプションの値を元に自動で設定されます。
# 必要に応じてsrun コマンドの引数や環境変数により確保したリソースの範囲で上書き指定が可能です。
srun ./a.out
## ジョブスクリプトに関する補足 ##
# 「#」で始まる行あるいは、行中の「#」以降は、コメントとして扱われます。#SBATCH で始まる行のみ例外的にslurmのオプション指定として認識されます。
# ジョブ実行時のカレントディレクトリは、ジョブ投入時のカレントディレクトリに自動で移動します。
# ジョブ投入時に設定されている環境変数は、ジョブ実行時に継承されます。
```
### サンプルスクリプト
ジョブスクリプトのサンプルを公開していますので、参考にしてください。
| 実行種別 | サンプルファイル|
| ------------------------- | --------------- |
| 逐次実行 | [ダウンロード](./sample_normal.txt)
| スレッド並列 | [ダウンロード](./sample_thread.txt)
| プロセス並列(Intel MPI) | [ダウンロード](./sample_process.txt)
| ハイブリッド並列 | [ダウンロード](./sample_hybrid.txt)
### Slurmオプション
ジョブスクリプトの Slurm Options の部分で「#SBATCH」に続けて指定します。
#### 主要なオプション
| オプション | 意味 | 指定例 |
| --- | --- | --- |
| -p _QUEUE_ | キューの指定 **(必須項目)** | -p gr19999b |
| -t _HOUR:MINUTES:SECONDS_ | 実行時間の上限設定 | -t 24:0:0 |
| --rsc p=_PROCS_:t=_THREADS_:c=_CORES_:m=_MEMORY_ <br> or <br> --rsc g=_GPU_ | リソースの指定。詳細は[こちら](/run/resource#resource) | --rsc p=4:t=8:c=8:m=8G <br> or <br> --rsc g=1 |
| -o _FILENAME_ | 標準出力の保存先の指定。指定可能な特殊文字は[公式マニュアル](https://slurm.schedmd.com/sbatch.html#SECTION_%3CB%3Efilename-pattern%3C/B%3E)を参照。| -o result.out |
| -e _FILENAME_ | 標準エラー出力の保存先の指定。指定可能な特殊文字は[公式マニュアル](https://slurm.schedmd.com/sbatch.html#SECTION_%3CB%3Efilename-pattern%3C/B%3E)を参照。| -e result.err |
| -J _JOBNAME_ | ジョブ名の指定。<br>指定しない場合は、ジョブスクリプト名がジョブ名になります。 | -J ReplaceJobName |
| --comment=_Comment_ | コメントの指定 | --comment=ThisIsComment |
| -a _ARRAY\_SPEC_ | アレイジョブの指定。詳しくは[こちら](/run/tips/#arrayjob) | -a 1-5 |
| -d _TYPE:JOBID_ | ジョブの実行順序の指定。詳しくは[こちら](/run/tips/#dependency) | -d afterok:999999 |
| --no-requeue | 障害発生時のジョブ再実行の禁止を指定 | --no-requeue |
| --mail-user=_MAILADDR_ | メールアドレスの指定 | --mail-user=bar@sample.com |
| --mail-type=_TYPE_ | イベント通知の指定<br>BEGIN, END, FAIL, REQUEUE, ALLを必要に応じて指定 | --mail-type=BEGIN,END |
その他のオプションや、オプションの詳細は [公式マニュアル](https://slurm.schedmd.com/sbatch.html) をご参照ください。
また、[ジョブ投入する際に使用できないオプション](/run/tips#sbatch_ignore)についても、必要に応じてご確認ください。
### プログラムの実行方法(重要){#srun}
プログラムを計算ノード上で動作させるためには、逐次プログラム、MPIプログラムに関わらず、ジョブスクリプトのプログラムを
実行する箇所に **必ず** _**srun**_ コマンドを使用する必要があります。
srunコマンドのオプションのうち、代表的なものを以下に示します。
その他のオプションや、オプションの詳細は、[公式マニュアル](https://slurm.schedmd.com/srun.html#SECTION_OPTIONS)をご参照下さい。
#### **基本オプション** {#basic_options}
オプション |機能
:--------------------:|-----------------------
|