SLURMsrun
とsbatch
コマンドの違いを理解しようとしています。以下の質問に対する具体的な回答ではなく、一般的な説明に満足しますが、ここでは、出発点となり、私が探しているもののアイデアを与えることができるいくつかの具体的な混乱のポイントを示します。
ドキュメントによると、srun
はジョブsbatch
を送信するためのものであり、後で実行するためにジョブを送信するためのものですが、実際の違いは私にはわかりません。それらの動作は同じようです。たとえば、それぞれ2つのCPUを備えた2つのノードを持つクラスターがあります。srun testjob.sh &
5xを続けて実行すると、CPUが使用可能になるまで、5番目のジョブがうまくキューに入れられますsbatch testjob.sh
。
質問をより具体的にするために、私は始めるのに良い場所かもしれないと思います:私が他ではできないことの1つで私ができることは何ですか、そしてなぜですか?
両方のコマンドの引数の多くは同じです。最も関連性の高いように見えるものがあります--ntasks
、--nodes
、--cpus-per-task
、--ntasks-per-node
。これらは互いにどのように関連しており、srun
vsではどのように異なりますsbatch
か?
1つの特定の違いは、実行可能権限がないsrun
場合、testjob.sh
つまりchmod +x testjob.sh
、実行可能ファイルsbatch
を正常に実行するとエラーが発生することです。これを引き起こす「内部」で何が起こっているのでしょうか。
ドキュメントにsrun
は、sbatch
スクリプト内で一般的に使用されるものについても記載されています。これは、次の質問につながります。それらはどのように相互作用し、それぞれの「標準的な」ユースケースは何ですか?具体的にはsrun
、単独で使用することはありますか?
srun
スクリプト内でわざわざ呼び出すのですか?おそらく私は「仕事のステップ」の意味について混乱しています。たとえば、runjob.sh
を含むと呼ばれるスクリプト#!/bin/bash srun myjob.sh
がある場合、sbatch runjob.sh
(a)と(b)sbatch myjob.sh
と(c)srun myjob.sh
と(d)の呼び出しには実際的な違いがありsrun runjob.sh
ますか?(明らかに最後のものはばかげていますが、私は興味があります)。