SLURM がsbatch
スクリプトからジョブを起動する方法がわかりません。SLURM が--ntasks
引数を無視しsrun
て、バッチ ファイル内のすべてのタスクをすぐに起動しているようです。StackOverflowのこの回答のコードを少し変更した例を次に示します。
$ salloc --ntasks=1 --ntasks-per-core=1
salloc: Granted job allocation 1172
$ srun -n 1 sleep 10 & time srun -n 1 echo ok
[1] 5023
srun: cluster configuration lacks support for cpu binding
srun: cluster configuration lacks support for cpu binding
ok
real 0m0.052s
user 0m0.004s
sys 0m0.012s
したがって、私のセットアップでは、srun echo
コマンドはすぐに実行されますが、コマンドの終了後に実行されると予想されますsrun sleep 10
。
私は SLURM 2.6.5 を使用して、8 コアの個人用ワークステーションでジョブのスケジュールと送信を行っています。自分でインストールしたため、構成が壊れている可能性は十分にあります。slurm.conf ファイルの関連部分を次に示します。
# SCHEDULING
SchedulerType=sched/backfill
SelectType=select/cons_res
SelectTypeParameters=CR_CPU
# COMPUTE NODES
NodeName=Tom NodeAddr=localhost CPUs=7 RealMemory=28100 State=UNKNOWN
PartitionName=Tom Nodes=Tom Default=YES MaxTime=INFINITE State=UP
printenv | grep SLURM
実行後の出力は次のとおりですsalloc --ntasks=1
SLURM_NODELIST=Tom
SLURM_NODE_ALIASES=(null)
SLURM_MEM_PER_CPU=4100
SLURM_NNODES=1
SLURM_JOBID=1185
SLURM_NTASKS=1
SLURM_TASKS_PER_NODE=1
SLURM_JOB_ID=1185
SLURM_SUBMIT_DIR=/home/tom/
SLURM_NPROCS=1
SLURM_JOB_NODELIST=Tom
SLURM_JOB_CPUS_PER_NODE=1
SLURM_SUBMIT_HOST=Tom
SLURM_JOB_NUM_NODES=1
コメントや提案をいただければ幸いです。さらに情報が必要な場合はお知らせください。
読んでくれてありがとう、
トム
もう少し遊んだら更新
私はある程度の進歩を遂げましたが、まだ私が望む動作を完全には得ていません。
使用すると、ステップを待機--exclusive
するステップを取得できます。echo
sleep
salloc --ntasks=1
salloc: Granted job allocation 2387
srun -n 1 --exclusive sleep 10 & time srun -n 1 --exclusive echo ok
[1] 16602
ok
[1]+ Done srun -n 1 --exclusive sleep 10
real 0m10.094s
user 0m0.017s
sys 0m0.037s
と
salloc --ntasks=2
salloc: Granted job allocation 2388
srun -n 1 --exclusive sleep 10 & time srun -n 1 --exclusive echo ok
[1] 16683
ok
real 0m0.067s
user 0m0.005s
sys 0m0.020s
しかし、各ステップが複数のプロセッサを必要とする複数ステップのジョブを実行している場合、これを適切に行う方法はまだわかりません。
salloc --ntasks=6
salloc: Granted job allocation 2389
srun -n 2 --exclusive stress -c 2 &
srun -n 2 --exclusive stress -c 2 &
srun -n 2 --exclusive stress -c 2 &
12個stress
のプロセスを提供します。
salloc --ntasks=6
salloc: Granted job allocation 2390
srun -n 1 --exclusive stress -c 2 &
srun -n 1 --exclusive stress -c 2 &
srun -n 1 --exclusive stress -c 2 &
srun -n 1 --exclusive stress -c 2 &
srun -n 1 --exclusive stress -c 2 &
srun -n 1 --exclusive stress -c 2 &
sbatch
では、スクリプトで 6 つのプロセッサを使用し、それぞれ 2 つのプロセッサで一度に 3 つのステップを開始するにはどうすればよいでしょうか? 使い方は正しいsrun --exclusive -n 1 -c 2 stress -c 2
ですか?