5.4. バルクジョブ

バルクジョブは、同一実行モジュールのパラメータを変えながら複数回実行する場合に効率的なジョブです。

パラメータと関連づけて入力ファイルを変更しながらジョブを実行する事も可能です。パラメータごとに実行されるジョブをサブジョブと呼びます。

../_images/BulkJob_01.png

5.4.1. ジョブの投入

バルクジョブは、pjsubコマンドに--bulkオプションを付けて投入します。。
サブジョブに渡すパラメータは、--sparamオプションを指定します。

[書式]

$ pjsub --bulk --sparam startbulkno-endbulkno

オプション

説明

--bulk

必須オプションです。

--sparam

必須オプションです。

startbulkno

投入する最初のサブジョブに割り当てる番号(0~999999)を指定します。

endbulkno

投入する最後のサブジョブに割り当てる番号(0~999999)を指定します。

注意

--interact--step、または、--mswkと同時に指定された場合、指定されたオプションの組合せが不正であるとしてエラーになります。

例)バルク番号を0から9まで指定した場合

[_LNlogin]$ pjsub --bulk --sparam "0-9" run.sh

上記では、サブジョブを10個起動し、0から9のパラメータを増分1で渡します。

5.4.2. バルクジョブスクリプト

以下にバルクジョブのスクリプト例を示します。

入力データ、出力データは各バルク番号をファイル名に含むように作成し、ジョブスクリプト内では、${PJM_BULKNUM}でバルク番号を取り扱います。

  • データファイルが indata.0 から indata.9 まで10種類あり、それぞれを入力としてプログラムを実行する場合

#!/bin/sh -x
#PJM -L "node=12"
#PJM -L "rscgrp=small"
#PJM -L "elapse=01:00:00"
#PJM --mpi "max-proc-per-node=4"         # 1ノードあたりに生成するMPIプロセス数の上限値
#PJM -g groupname
#PJM -x PJM_LLIO_GFSCACHE=/vol000N
#PJM -S
#
IN_DATA=./indata.${PJM_BULKNUM}          # ${PJM_BULKNUM} はバルク番号に展開。
OUT_DATA=./outdata.${PJM_BULKNUM}

mpiexec --stdin ${IN_DATA} --of-proc ${OUT_DATA} ./a.out

5.4.3. サブジョブID

バルクジョブのサブジョブには、ジョブIDとバルク番号を組み合わせた「サブジョブID」が付けられます。
バルク番号は、pjsubのオプションとして指定した番号 (0 から 999999) が設定されます。

[バルクジョブのサブジョブIDの例]

ジョブID

バルク番号

サブジョブID

12345

1

12345[1]

12345

2

12345[2]

注釈

ジョブIDが「12345」、バルク番号が「1」の場合、サブジョブIDは「 12345[1] 」になります。

5.4.4. ジョブ実行結果の参照

ジョブが終了すると、ジョブ投入時のカレントディレクトリにジョブ実行結果がファイル出力されます。
ジョブ実行結果のファイル名は以下のとおりです。

[サブジョブごとに出力されるファイル]

形式

説明

ジョブ名.サブジョブID.out

サブジョブが標準出力に書き出したデータです。

ジョブ名.サブジョブID.err

サブジョブが標準エラー出力に書き出したデータです。

ジョブ名.サブジョブID.stats

サブジョブの統計情報が出力されたファイルです。

[バルクジョブごとに出力されるファイル]

形式

説明

ジョブ名.ジョブID.stats

バルクジョブの統計情報が出力されたファイルです。

注意

  • ジョブ名は、pjsubコマンドで指定したジョブスクリプトのファイル名になります。

  • ジョブ名の先頭が半角数字の場合、出力ファイル名の先頭に文字 "J" が付加されます。

  • 出力ファイル名で、ジョブ名の部分(先頭に付加される文字"J"も含む)は、63 文字までです。

  • ジョブスクリプトではなく、標準入力からジョブを投入した場合は、ジョブ名の部分は "STDIN" となります。

  • バルクジョブに対し、標準出力や標準エラー出力を同じファイル名に指定した場合、各サブジョブの出力が混在します。

例)バルクジョブ実行結果ファイル名

sample.sh.i70990.stats        # バルクジョブの統計情報ファイル
sample.sh.e70990[0].err       # サブジョブ0の標準エラー出力の結果ファイル
sample.sh.i70990[0].stats     # サブジョブ0の統計情報の出力ファイル
sample.sh.o70990[0].out       # サブジョブ0の標準出力の結果ファイル
sample.sh.e70990[1].err       # サブジョブ1の標準エラー出力の結果ファイル
sample.sh.i70990[1].stats     # サブジョブ1の統計情報の出力ファイル
sample.sh.o70990[1].out       # サブジョブ1の標準出力の結果ファイル
sample.sh.e70990[2].err       # サブジョブ2の標準エラー出力の結果ファイル
sample.sh.i70990[2].stats     # サブジョブ2の統計情報の出力ファイル
sample.sh.o70990[2].out       # サブジョブ2の標準出力の結果ファイル

注意

出力先の指定がない場合、pjsubを実行した時のカレントディレクトリに出力されます。