5.9. ジョブ実行コマンドのオプション

pjsubのオプション一覧を示します。

5.9.1. 基本オプション

ジョブを実行するグループや環境変数の引渡しなど、pjsubコマンドの基本的なオプションを示します。

オプション名

機能

-L "resource=value[,...]"

ジョブの資源に関するオプションを指定します。
詳細は「リソース指定」に示します。

--mpi "parameter[,...]"

MPI ジョブの各種パラメーターを指定します。
詳細は「MPIオプション」に示します。

--gname "gname"

ジョブ実行時に、ジョブのプロセスが所属するグループ名を指定します。
グループ名(gname)、グループID(gid)のどちらでも指定可能です。
ジョブ管理ノードに指定されたグループが存在しない場合、ジョブ投入はエラーとなります。

--help

ヘルプを表示します。

-j

標準エラー出力を標準出力へ出力します。

-m "mailoption[,...]"

ジョブのステータスなどの情報について、メール通知を行うかを指定します。
mailoptionman pjsubを参照ください。
本オプション使用時は、--mail-listも使用してメールアドレスを必ず指定してください。

--mail-list "mailaddress[,...]"

メールの送信先を指定します。複数指定時はコンマ (",") で区切って指定します。指定する文字列のサイズは 255文字までです。
メールアドレスを間違えて入力した場合は宛先に届きません、また、エラー通知等もないため注意してください。

--name "name"

ジョブの名前を指定します。ジョブ名には63バイトまで指定できます。
本オプションを指定しない場合、コマンド行で指定されたスクリプトファイル名がジョブ名として設定されます。
スクリプトファイル名が指定されていない場合は、"STDIN" がジョブ名として設定されます。
ジョブ名の先頭文字は、半角アルファベットのみです。nameには、"/" を含んだ文字列は指定できません。

ジョブ名およびスクリプトファイル名に使用できる文字は次の通りです。
  • 半角英数字、半角ハイフン(-)、半角アンダースコア(_)、半角ドット(.)が使用可能です

  • 上記以外の文字の使用は未サポートです


--restart

このオプションが指定されたとき、ジョブ実行環境停止または異常発生によりジョブ実行が中断された場合に、再実行を試みます。
このオプションを指定しない場合(デフォルト値)は、再実行しません。

-X

全ての環境変数を計算ノードに転送します。

ヒント

スーパーコンピュータ「富岳」では運用を補助するために「富岳」固有の環境変数およびpjsubオプションを用意しています。必要に応じてこれらのオプションも利用してください。

5.9.2. リソース指定

ジョブが使用するリソースを指定するオプションを示します。
ジョブが要求する資源の上限値を-Lに続いてresource=valueの形式で指定します。
resourceを複数指定する場合は、カンマで区切って指定します。

項目名

内容

-L "node=nodeshape"

ジョブに割り当てるノード数および形状を指定します。

  • 1次元の場合:node=N1

  • 2次元の場合:node=N1xN2

  • 3次元の場合:node=N1xN2xN3

ノードの形状指定に続けて、ノードの割り当て方法を指定できます。

  • 1次元の場合:node=N1[:torus|:mesh|:noncont]

  • 2次元の場合:node=N1xN2[:torus|:mesh|:noncont]

  • 3次元の場合:node=N1xN2xN3[:torus|:mesh|:noncont]

    • :torus

      Tofu単位(12ノード)で計算機資源をジョブに割り当てるトーラスモード

    • :mesh

      ノード単位で計算機資源をジョブに割り当てるメッシュモード

    • :noncont

      ノード単位で計算機資源をジョブに割り当てる離散割り当て

利用できるノード数、形状、割り当て方法はリソースグループごとに設定されています。 リソースを参照ください。

-L "elapse=elapsetimelimit"

ジョブ単位の経過時間制限値を設定します。リソースグループごとに最大値を設定しています。
elapsetimelimitは、 "[[時間:]分:]秒" の形式で指定します。
  • -L "elapse=30" (30秒の場合)

  • -L "elapse=2:30" (2分30秒の場合)

  • -L "elapse=1:00:00" (1時間の場合)

-L "elapse=min_limit-max_limit"
-L "elapse=min_limit-"
経過時間制限値を範囲で指定します。
min_limit,max_limitに指定できる値はリソースグループごとに異なります
(min_limit,max_limitの確認方法は後述。)
経過時間がmin_limit に達しても、経過時間が最長で max_limit に達するまで実行を継続できます。
ただし、経過時間がmin_limit を超えて実行しているとき、次の場合は、経過時間がmax_limit未満でもジョブは強制終了させられます。
  • 後続のジョブのためにノードが必要になった場合

  • デッドラインスケジューリングによってノードが予約されている期間になった場合


  • -L "elapse=2:30-5:00" (2分30秒-5分の場合)

  • -L "elapse=1:00:00-1:30:00" (1時間-1時間30分の場合)

  • -L "elapse=2:00:00-24:00:00" (2時間-24時間の場合)

  • -L "elapse=2:00:00-" (max_limit省略時は使用しているリソースグループの最大値)

-L "rscgrp=rscgname"

ジョブを投入するリソースグループ名 rscgnameを指定します。

5.9.2.1. 最低実行時間を指定したジョブ実行

「富岳」では、一部リソースグループを除き、経過時間指定を範囲で指定することができます。
通常の実行では、指定経過時間になるとジョブが終了しますが、この機能を使うと指定経過時間後もノードが空いていれば
引き続きジョブを実行することができます。
ジョブ投入時に指定した最低実行時間(min_limit)以降に使用された計算資源は課金対象外となります。

スケジューリングは最低実行時間で行われるため、短く指定することでスケジューリングされやすくなるというメリットもあります。
経過時間がmin_limitに達しても、経過時間が最長でmax_limitに達するまで実行を継続し、min_limit以降は課金対象外となります。
- max_limitは経過時間上限+72Hまで指定可能。
- max_limitを省略した場合(例: elapse=30:00-)は,max_limitは経過時間上限+72Hになります。
ただし、経過時間がmin_limitを超えた場合に、後続のジョブが割り当てられた場合、経過時間がmax_limit未満でもジョブは強制終了されます。そのため、ジョブ側でチェックポイントリスタートなどを利用してジョブの打ち切りに対応する必要があります。
- チェックポイントリスタートには、VeloCなどの利用を推奨します。
../_images/min_limit_ja.png
参考):ジョブ運用ソフトウェア エンドユーザ向けガイド - 2.3.2.3 ジョブの経過時間制限値の指定
以下は、リソースグループごとに設定された min_limit,max_limit の確認方法の例です。
バッチジョブの例
$ pjacl -u $USER -g $GROUP --rg small
(中略)
pjsub option parameters
    (-L/--rsc-list)                         lower            upper            default
        (elapse=)                           00:01:00         72:00:00         00:01:00
        (adaptive elapsed time min)         00:01:00         72:00:00         00:01:00  # バッチジョブのminLimit
        (adaptive elapsed time max)         00:01:01         144:00:00        144:00:00 # バッチジョブのmaxLimit
会話型ジョブの例
$ pjacl -u $USER -g $GROUP --rg int
(中略)
pjsub option parameters
(中略)
    (--interact -L)                         lower            upper            default
        (elapse=)                           00:00:10         06:00:00         00:00:10
        (adaptive elapsed time min)         00:00:10         06:00:00         00:00:10 # 会話型ジョブのminLimit
        (adaptive elapsed time max)         2                48:00:00         02:00:00 # 会話型ジョブのmaxLimit

注意

  • 経過時間指定を範囲で指定したジョブは、pjalterコマンドによるパラメータ変更の対象外となります。 投入後にパラメータ(経過時間制限値、リソースグループ、リソースユニット、ユーザ内優先度)を変更することはできません。

  • 経過時間指定を範囲で指定したジョブは、ジョブ振り分け運用の対象外となります。 振り分け先のリソースグループに対する直接投入においては、範囲の指定が可能です。

5.9.2.2. 低優先度ジョブ実行

「富岳」では、割り当て資源量を消費せずに低優先度でジョブを実行することができます。

対象課題:有償課題を除く課題
対象課題に該当する場合のみジョブの投入が可能です。投入対象外の場合はエラーとなります。

以下のリソースグループで低優先度ジョブを実行できます。

  • spot-large

  • spot-small

  • spot-int

  • spot-middle

注意

  • 有償課題は低優先度利用の対象外です。

  • 低優先度ジョブはノードが空いている場合に実行されます。

  • 通常ジョブが投入されている場合は、投入時期に関係なくノードが空くまで低優先度ジョブの開始が待たされます。

  • 低優先度ジョブのリソースグループの設定は、優先度以外は通常リソースグループ(spot-XXXのXXX部分)と同じです。

低優先度ジョブでは、ジョブの実行時間上限を4時間に制限しています。
ただし、ジョブが実行中のノードに後続ジョブがスケジューリングされていない場合は、最大で12時間(spot-intは6時間)まで継続して実行できます。
実行時間上限を超えてジョブを実行するには、「5.9.2 リソース指定」および 「5.9.2.1 最低実行時間を指定したジョブ実行」を参考に経過時間を範囲で指定してください。
尚、指定時間の下限は4時間以下、上限は12時間以下にする必要があります。

例:ジョブの経過時間を4時間に指定し、後続のジョブが割り当てられない場合に最大で12時間まで実行を継続する場合

[_LNlogin]$ pjsub -L "elapse=4:00:00-12:00:00" job.sh

ジョブの経過時間を4時間以内に指定する場合は、経過時間の範囲指定は不要です。この場合、ジョブは指定時間が経過すると終了します。

[_LNlogin]$ pjsub -L "elapse=4:00:00" job.sh

注意

  • 指定時間の下限に4時間を超える値を指定するとエラーになります。また、指定時間の上限に12時間より大きい値を指定するとエラーになります。

    以下はエラーとなる例です。

    -L "elapse=6:00:00-12:00:00" (指定時間の下限が4時間を超えている)
    -L "elapse=4:00:00-24:00:00" (指定時間の上限が12時間を超えている)
  • 誤った実行時間指定でジョブを投入した場合は以下のエラーメッセージが出力されます。ジョブの実行時間指定を修正して再度ジョブを投入してください。

    [ERR.] PJM 0057 pjsub elapse=18000 is greater than the upper limit (14400).
  • 実行時間上限を超えて実行しているジョブは、後続のジョブがスケジューリングされると強制終了されます。
    後続のジョブがスケジューリングされジョブが途中終了した場合は、ジョブはCCL状態に遷移し、ジョブ統計情報の「REASON」欄に「ANOTHER JOB STARTED」と表示されます。pjstatコマンド等で確認してください。

5.9.3. MPIオプション

MPIの動作に関わるパラメータを設定します。
ジョブで使用するMPIに関する設定を、--mpi "parameter[,parameter…]"オプションで設定します。
parameterを複数指定する場合は、カンマで区切って指定します。

MPIに関するオプションの詳細については、「MPIジョブ投入時の指定」を参照してください。

項目名

内容

--mpi "shape= shape "

静的に起動するプロセスの形状を指定します。
shapeには、shape=N1shape=N1xN2、または、shape=N1xN2xN3を指定できます。
-L(--rsc-list)オプションのnodeで指定した値と同じ次元数を指定する必要があります。
省略した場合、nodeで指定した値と同じ値が使用されます。
vnodeオプションを指定した場合には、1 のみ指定できます。

--mpi "proc= num "

静的に起動する最大のプロセス数を、numに指定します。
省略した場合、shapeで指定した値の積となります。
shapeで指定した値の積×ノード内のCPU コア数より大きい値を指定した場合、ジョブの受付が拒否されます。
vnodeオプションを指定した場合には、vnodeオプションで指定した core 数以上の値を指定した場合もジョブの受付が拒否されます。

--mpi "max-proc-per-node= mppnnum "

プログラムが 1ノードに生成する最大のプロセス数を指定します。
省略した場合、1ノードに生成する最大プロセス数は、proc で指定した値を 1ノード内に生成するプロセス数に変換した値となります。
1ノード内の CPUコア数よりも大きい値が指定された場合、または、proc で指定した値を 1ノード内に生成するプロセス数に変換した値が mppnnum を超えていた場合、ジョブの受付が拒否されます。vnodeオプションを指定した場合には、ジョブの受付が拒否されます。

5.9.4. ジョブ統計情報

ジョブの実行終了時に、ジョブの統計情報を出力することができます。
ジョブ統計情報を出力するには、pjsubコマンドにオプション-s、または、-Sを指定し、ジョブを投入します。
ジョブの統計情報はジョブの異常終了時などの調査に役に立ちます。

オプション名

機能

-s
(小文字)
投入したジョブの統計情報をファイルに出力します。
-Sオプションとの併用はできません。
指定したファイルに出力したい場合は、--spathオプションを指定します。
-S
(大文字)
-sオプションで出力される情報に加えて、投入したジョブのノード単位の情報を出力します。
-sオプションとの併用はできません。
指定したファイルに出力したい場合は、--spathオプションを指定します。

--spath pathname

ジョブの統計情報を、pathnameで指定されたファイルに出力します。
-s、または、-Sオプションを同時に指定する必要があります。

5.9.5. ジョブスクリプト内環境変数

ジョブスクリプト内で使用できる代表的な環境変数を示します。
詳細は「ジョブ運用ソフトウェア エンドユーザ向けガイド」の「2.1.2 ジョブ内での環境変数」を参照してください。

環境変数名

内容

PJM_BULKNUM

バルク番号(バルクジョブだけ設定)

PJM_COMMENT

pjsubオプションの--commentで指定したコメントが入ります。

PJM_ENVIRONMENT

ジョブ種別が入ります。BATCH、または、INTERACTとなります。

PJM_JOBDIR

ジョブスクリプト実行開始時のカレントディレクトリのパス

PJM_JOBID

ジョブIDが入ります。

PJM_JOBNAME

ジョブ名が入ります。

PJM_LOCALTMP

第1階層ストレージ上のノード内テンポラリ領域のパスが入ります。

PJM_SUBJOBID

サブジョブIDが入ります。

PJM_STEPNUM

ステップジョブのステップ番号が入ります。

PJM_LLIO_SHAREDTMP_SIZE

第1階層ストレージ上の共有テンポラリ領域のサイズ(バイト)が入ります。

PJM_LLIO_LOCALTMP_SIZE

第1階層ストレージ上のノード内テンポラリ領域のサイズ(バイト)が入ります。

PJM_LLIO_AUTO_READAHEAD

ジョブが複数回続けて第1階層ストレージまたは第2階層ストレージ上の連続した領域を読み込もうとした場合、自動的に先読みをするか否かの動作です

  • on:先読みをします

  • off:先読みをしません

PJM_LLIO_ASYNC_CLOSE

第1階層ストレージおよび第2階層ストレージ上のファイルのクローズを非同期クローズにするか否かの動作です

  • on:非同期クローズ

  • off:同期クローズ

on(非同期クローズ)が設定されている場合、ファイルのクローズ時に書出し完了は保証されません。off(同期クローズ)が設定されている場合、ファイルのクローズ時に書出し完了は保証されます。

PJM_LLIO_CN_CACHE_SIZE

第1階層ストレージ上の計算ノード内キャッシュのサイズ(バイト)が入ります。

PJM_LLIO_CN_CACHED_WRITE_SIZE

第1階層ストレージへの書込み時にキャッシュするか否かのしきい値(バイト)が入ります。

PJM_LLIO_CN_READ_CACHE

第1階層ストレージまたは第2階層ストレージから読み込んだファイルを計算ノード内キャッシュにキャッシュするか否かの動作です。

  • on: キャッシュします。

  • off: キャッシュしません。

PJM_LLIO_SIO_READ_CACHE

第2階層ストレージから計算ノードへ読み込んだファイルを第1階層ストレージにキャッシュするか否かの動作です。

  • on: キャッシュします。

  • off: キャッシュしません。

PJM_LLIO_STRIPE_COUNT

第1階層ストレージにファイルを分散配置する際のファイルあたりのストライプ数が入ります。

PJM_LLIO_STRIPE_SIZE

第1階層ストレージにファイルを分散配置する際のストライプサイズ(バイト)が入ります。

PJM_LLIO_UNCOMPLETED_FILEINFO_PATH

未書出しファイル情報の出力先パスが入ります。

ジョブ終了時に、第2階層ストレージへの書出しが完了していないファイルがキャッシュに残っていた場合に、ファイル名の一覧を出力するファイルのパスです。

PJM_O_HOME

pjsubコマンドを発行したユーザの環境変数 HOME が入ります。

PJM_O_LANG

pjsubコマンドを発行したユーザの環境変数 LANG が入ります。

PJM_O_LOGNAME

pjsubコマンドを発行したユーザの環境変数 LOGNAME が入ります。

PJM_O_PATH

pjsubコマンドを発行したユーザの環境変数 PATH が入ります。

PJM_O_SHELL

pjsubコマンドを発行したユーザの環境変数 SHELL が入ります。

PJM_O_HOST

pjsubコマンドを発行したユーザの環境変数 HOST が入ります。

PJM_O_WORKDIR

pjsubコマンドを発行したユーザのカレントディレクトリが入ります。

注意

  • 上記表で示した環境変数と同名の環境変数を、pjsubコマンドの-xオプションに指定しても、その値は無視され、上記表で示した値になります。

  • pjsubコマンドを実行するシェル上で設定されている環境変数は、指示がない限り、ジョブ内には引き継がれません。ジョブ内に環境変数を引き継ぐためには、pjsub コマンドの-Xオプションを指定してください。ただし、上記表で示した環境変数と同名の環境変数は、pjsubコマンドの-Xオプションを指定しても、その値は無視され、上記表で示した値になります。

5.9.6. MPIプロセスに設定される環境変数

MPIプロセス内では、ジョブ運用ソフトウェアによって、次の環境変数が設定されています
詳細は「ジョブ運用ソフトウェア エンドユーザ向けガイド」の「2.3.6.10 MPIプロセスに設定される環境変数」を参照してください。

環境変数名

内容

PMIX_RANK

MPIプロセスのランク番号が10進数で指定されます。

PLE_RANK_ON_NODE

計算ノード内でのMPIプロセスの識別番号が10進数で設定されます。
識別番号とは、同じ計算ノード上の同じMPI_COMM_WORLDに属するMPIプロセスの中で一意に割り当てられる番号で、0から始まります。

5.9.7. 実行開始時刻の指定

通常、ユーザーが投入したジョブは、空き資源の状況や優先度に従って最も早く実行できるように順番が決定されますが、ユーザーによる実行開始時刻の指定もできます。
実行開始時刻はpjsubコマンドの--atオプションを使い、以下の書式で指定します。

書式

説明

--at YYYYMMDD[hhmm]

YYYY は年、MM は月、DD は日を表します。
hh は時、mm は分を表します。hhmm を省略した場合は 0時0分が指定されたものとみなします。
また、秒単位では指定できません。
以下は、実行開始時刻を指定してジョブを投入する例です。
[_LNlogin]$ pjsub --at 202208011511 job.sh # 2022年8月1日15:11 に job.sh の実行を開始する

注意

  • 実行開始時刻の指定(--at オプション)は、有償利用の方のみ利用可能です。

  • 実行開始時刻を指定したジョブは、資源に空きがあっても、指定時刻より前に実行されることはありません。また、資源の空き状況によっては、指定時刻より後に実行される場合があります。

  • 会話型ジョブに対しては、実行開始時刻は指定できません。指定した場合は無視されます。