KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

srunとsbatch

登録日 :2024/10/22 04:47
カテゴリ :SLURM

sbatchとsrunは、どちらもSLURMワークロードマネージャーで単一コマンドを実行するために使用されますが、その使用方法と目的に違いがあります。以下に主な違いを説明します:

実行モード:
sbatch: バッチモードで実行します。ジョブをキューに投入し、リソースが利用可能になったら実行されます。
srun: 通常、対話モードで実行します。コマンドを即座に実行し、結果をリアルタイムで表示します。

出力の扱い:
sbatch: デフォルトでは出力をファイルに書き込みます(例:slurm-.out)。
srun: デフォルトでは標準出力と標準エラー出力を直接ターミナルに表示します。

リソース割り当て:
sbatch: ジョブスクリプトでリソース要求を指定し、利用可能になるまで待機します。
srun: 即座にリソースを割り当てようとし、利用可能でない場合はエラーを返すか待機します。

使用シナリオ:
sbatch: 長時間実行するジョブや、大規模なリソースを必要とするジョブに適しています。
srun: 短時間のタスクや、対話的に結果を確認したい場合に適しています。

スクリプト vs コマンドライン:
sbatch: 通常、ジョブスクリプトファイルを使用します(例:sbatch job_script.sh)。
srun: 通常、コマンドラインで直接コマンドを指定します(例:srun python script.py)。

ジョブ管理:
sbatch: ジョブIDが即座に返され、ユーザーは他の作業を続けられます。
srun: コマンドが完了するまで、通常はターミナルがブロックされます。

環境設定:
sbatch: ジョブスクリプト内で環境を設定できます。
srun: 現在のシェル環境を使用するか、コマンドラインで環境変数を設定する必要があります。

これらの違いを理解することで、実行したいタスクの性質に応じて適切なコマンド(sbatchまたはsrun)を選択できます。一般的に、バックグラウンドで実行する長時間のジョブにはsbatchを、即座に結果が必要な短時間のタスクにはsrunを使用することが多いです。