为什么我的 slurm 作业步骤没有并行启动?

akr*_*ica 5 slurm

我试图弄清楚“任务”的概念在 SLURM 中意味着什么。我在 SO 上找到了这个答案,它建议我使用以下作业脚本:

#!/bin/bash

#SBATCH --ntasks=2

srun --ntasks=1 sleep 10 & 
srun --ntasks=1 sleep 12 &
wait
Run Code Online (Sandbox Code Playgroud)

作者说这项工作总共需要 12 秒才能运行,因为这两个步骤sleep 10sleep 12并行运行的,但我无法重现这一点。

如果我将上述文件另存为slurm-test并运行

sbatch -o slurm.out slurm-test,
Run Code Online (Sandbox Code Playgroud)

我看到我的作业运行了 23 秒。

这是以下的输出sacct --format=JobID,Start,End,Elapsed,NCPUS -S now-2minutes

       JobID               Start                 End    Elapsed      NCPUS
------------ ------------------- ------------------- ---------- ----------
645514       2021-06-30T11:05:38 2021-06-30T11:06:00   00:00:22          2
645514.batch 2021-06-30T11:05:38 2021-06-30T11:06:00   00:00:22          2
645514.exte+ 2021-06-30T11:05:38 2021-06-30T11:06:00   00:00:22          2
645514.0     2021-06-30T11:05:38 2021-06-30T11:05:48   00:00:10          2
645514.1     2021-06-30T11:05:48 2021-06-30T11:06:00   00:00:12          2
Run Code Online (Sandbox Code Playgroud)

我的slurm.out输出是

srun: Job 645514 step creation temporarily disabled, retrying (Requested nodes are busy)
srun: Step created for job 645514
Run Code Online (Sandbox Code Playgroud)

显式包含-n 2sbatch调用中不会改变结果。我究竟做错了什么?如何让作业文件中的两个调用同时运行?

dam*_*ois 4

根据 Slurm 版本,您可能需要将--exclusive参数添加到 srun (其语义与 for 不同sbatch):

#!/bin/bash

#SBATCH --ntasks=2

srun --ntasks=1 --exclusive -c 1 sleep 10 & 
srun --ntasks=1 --exclusive -c 1 sleep 12 &
wait
Run Code Online (Sandbox Code Playgroud)

另外,添加-c 1更明确的内容可能会有所帮助,这同样取决于 Slurm 版本。