5. ファイルフォーマット

5.1. 構成定義ファイル

構成定義ファイルでは、moller でバッチジョブスクリプトを生成するための設定情報を YAML形式で記述します。本ファイルは以下の部分から構成されます。

  1. 全般的な記述: ジョブ名や出力ファイル名などを設定します。

  2. platformセクション: バッチジョブを実行するシステムやバッチジョブに関する設定を記述します。

  3. prologue, epilogue セクション: バッチジョブ内で行う環境設定や終了処理などを記述します。

  4. 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
      --requeue
    
  • PBSの場合 (リストで指定する例)

    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 のキーワードが有効です。このキーワードは、実際のバッチジョブスクリプト中では、並列実行のためのコマンド (srunmpirun) と node パラメータで指定した並列度の設定に置き換えて記述されます。

5.2. リストファイル

ジョブのリストを指定します。ファイルはテキスト形式で、一行に一つのジョブ名を記述します(ディレクトリ名がジョブ名となります)。

mollerでは、ジョブごとにディレクトリを用意し、ジョブ内の各タスクはディレクトリに移動して実行されます。ディレクトリはバッチジョブを実行するディレクトリの直下に配置されているものと仮定します。