5. ファイルフォーマット¶
5.1. 構成定義ファイル¶
構成定義ファイルでは、moller でバッチジョブスクリプトを生成するための設定情報を YAML形式で記述します。本ファイルは以下の部分から構成されます。
全般的な記述: ジョブ名や出力ファイル名などを設定します。
platformセクション: バッチジョブを実行するシステムやバッチジョブに関する設定を記述します。
prologue, epilogue セクション: バッチジョブ内で行う環境設定や終了処理などを記述します。
jobsセクション: タスクを記述します。
全体¶
name
バッチジョブのジョブ名を指定します。指定がない場合は空欄となります。(通常はジョブスクリプトのファイル名がジョブ名になります)
description
バッチジョブの説明を記述します。コメントとして扱われます
output_file
moller の出力先ファイル名を指定します。コマンドライン引数の指定がある場合はコマンドライン引数の指定を優先します。いずれも指定がない場合は標準出力に出力されます。
platform¶
system
対象となるシステムを指定します。現状では ohtaka と kugui が指定できます。
queue
使用するバッチキューの名称を指定します。キューの名称はシステムに依存します。
node
使用するノード数を指定します。指定方法は ノード数(整数値) または [ノード数, ノードあたりのコア数] (整数値のリスト) です。数値の範囲はシステムとキューの指定に依存します。(ノードあたりのコア数の指定はkugui,defaultのみ有効。ohtakaの場合は使われません。)
core
1ノードあたり使用するコア数を指定します。数値の範囲はシステムとキューの指定に依存します。
node
パラメータに同時にノードあたりのコア数が指定されている場合、core
の指定が優先します。(kugui,defaultのみ)
elapsed
バッチジョブの実行時間を指定します。書式は HH:MM:SS です。
options
その他のバッチジョブオプションを指定します。書式は、ジョブスクリプトのオプション行の内容をリスト形式または複数行からなる文字列で記述したものです。各行の冒頭の指示語(
#PBS
や#SBATCH
など)は含めません。以下に例を示します。
SLURMの場合 (文字列で指定する例)
options: | --mail-type=BEGIN,END,FAIL --mail-user=user@sample.com --requeuePBSの場合 (リストで指定する例)
options: - -m bea - -M user@sample.com - -r y
prologue, epilogue¶
prologueセクションはタスク開始前に実行する内容を記述します。ライブラリやパスなど環境変数の設定等を行うのに利用できます。epilogueセクションは全タスク終了後に実行する内容を記述します。
code
処理内容をシェルスクリプトの記法で記述します。記述内容はバッチジョブスクリプト中に埋め込まれてバッチジョブ内で実行されます。
jobs¶
ジョブで実行する一連のタスクを、タスク名をキー、処理内容を値として記述するテーブルの形式で記述します。
キー
タスク名
値
以下の項目からなるテーブル:
description
タスクの説明を記述します。コメントとして扱われます。
node
並列度を指定します。指定方法は以下のいずれかです。
[ プロセス数, プロセスあたりのスレッド数 ]
[ ノード数, プロセス数, プロセスあたりのスレッド数 ]
ノード数
ノード数を指定した場合、その数のノードが排他的にジョブに割り当てられます。ノード数を指定しない1番目の形式の場合、使用コア数が1ノードに満たないときは複数のジョブがノードに詰めて割当られます。1ノード以上を使う場合は必要ノード数を占有して実行されます。
parallel
ジョブ間で多重実行する場合は
true
, 逐次実行する場合はfalse
を指定します。デフォルトはtrue
です。
run
タスクの処理内容をシェルスクリプトの記法で記述します。MPIプログラムまたは MPI/OpenMP ハイブリッドプログラムを実行する箇所は
srun prog [arg1, ...]と記述します。
srun
の他にmpirun
,mpiexec
のキーワードが有効です。このキーワードは、実際のバッチジョブスクリプト中では、並列実行のためのコマンド (srun
やmpirun
) とnode
パラメータで指定した並列度の設定に置き換えて記述されます。
5.2. リストファイル¶
ジョブのリストを指定します。ファイルはテキスト形式で、一行に一つのジョブ名を記述します(ディレクトリ名がジョブ名となります)。
mollerでは、ジョブごとにディレクトリを用意し、ジョブ内の各タスクはディレクトリに移動して実行されます。ディレクトリはバッチジョブを実行するディレクトリの直下に配置されているものと仮定します。