.. _sec-fileformat: ファイルフォーマット ================================================================ 構成定義ファイル ---------------------------------------------------------------- 構成定義ファイルでは、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の場合 (文字列で指定する例) .. code-block:: yaml options: | --mail-type=BEGIN,END,FAIL --mail-user=user@sample.com --requeue - PBSの場合 (リストで指定する例) .. code-block:: yaml 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 ハイブリッドプログラムを実行する箇所は .. code-block:: bash srun prog [arg1, ...] と記述します。 ``srun`` の他に ``mpirun``, ``mpiexec`` のキーワードが有効です。このキーワードは、実際のバッチジョブスクリプト中では、並列実行のためのコマンド (``srun`` や ``mpirun``) と ``node`` パラメータで指定した並列度の設定に置き換えて記述されます。 リストファイル ---------------------------------------------------------------- ジョブのリストを指定します。ファイルはテキスト形式で、一行に一つのジョブ名を記述します(ディレクトリ名がジョブ名となります)。 mollerでは、ジョブごとにディレクトリを用意し、ジョブ内の各タスクはディレクトリに移動して実行されます。ディレクトリはバッチジョブを実行するディレクトリの直下に配置されているものと仮定します。