Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

srun による対話実行

形式

srun [options] -- <command...>

srun の動作

srun はデフォルトでコマンドを foreground で実行します。

挙動は、すでに allocation の中にいるかどうかで変わります。

  • allocation の内側:
    • step record を作成する
    • foreground で直接コマンドを実行する
  • allocation の外側:
    • allocation に近い top-level record を作成する
    • 実行可能になるまで待つ
    • step record を作成する
    • foreground でコマンドを実行する

daemon-managed な run job を投入するのは --no-wait の場合だけです。

--ntasks2 以上の場合、foreground の srun は同じホスト上で task rank ごとに 1 つのローカルプロセスを起動し、SLURM_PROCIDSLURM_LOCALID を export します。

主なオプション

オプション意味
-J, --job-name <name>job name を設定する
-p, --partition <partition>partition を選ぶ
-c, --cpus-per-task <n>task ごとの CPU 数
-n, --ntasks <n>同時に起動するローカル task 数
--mem <size>要求メモリ
-t, --time <time>time limit
-G, --gpus <n>要求 GPU slot 数
-o, --output <path>foreground stdout の出力先
-e, --error <path>foreground stderr の出力先
-D, --chdir <path>working directory
--immediateすぐにリソースが確保できない場合は失敗する
--ptyPTY 対応のために予約されており、現在は明示エラーで拒否される
--constraint <feature>一致する local feature を要求する
--cpu-bind <mode>CPU affinity を設定する
--label出力の先頭に <task_id>: を付ける
--unbuffered転送出力を eager に flush する
--no-waitdaemon-managed run job として投入する

出力挙動

例:

srun --label --unbuffered -- echo hello

典型的な出力:

0: hello

CPU Binding

サポートする値:

  • none
  • cores
  • map_cpu:<id,id,...>

例:

srun --cpu-bind map_cpu:0,2 -- python train.py

Immediate Mode

--immediate を付けると、リソースがすぐに確保できない場合に待たずに失敗します。

例:

srun --immediate -p gpu -G 1 -- nvidia-smi

--no-wait

--no-wait は foreground で待たず、daemon に run job を投入します。

典型的な出力:

Submitted run job 12

制限:

  • --label--unbuffered--no-wait と同時には使えない
  • --pty は互換性のために parse されるが、実際の PTY 実装がないため現在は “not implemented yet” エラーで終了する