如何 运行 使用 SLURM 批量处理两个多处理程序?

How to run two multiprocessing programs in one batch using SLURM?

我有一个包含多个节点的 SLURM 集群,每个节点有 16 个 vcpus。我试过 运行 以下代码:

#SBATCH --nodes 2
#SBATCH --ntasks 2
#SBATCH -c 16

srun --exclusive --nodes=1 program1 &
srun --exclusive --nodes=1 program2 &
wait

program1program2 每个需要 16cpus,我预计将分配 2 个具有 32 个内核的节点并且 program1 将在第一个节点上 运行 program2 在第二个上,但我收到以下错误消息:

srun: error: Unable to create step for job 364966: Requested node configuration is not available

如果我只使用 --nodes--ntasks 键,sbatch 会分配 2 个节点和 2 个 cpu,如果我使用 --nodes-c 选项,我会收到消息--ntasks 应该定义。

如果我设置 --ntasks=1,SLURM 将 nnodes 设置为 1。

如何运行这两个程序在一个节点和 16 个 vcpus 上分批处理?

试试这个:

#SBATCH --nodes 2
#SBATCH --ntasks-per-node 16

srun --exclusive -n 16 program1 &
srun --exclusive -n 16 program2 &
wait

以下似乎有效:

#SBATCH --nodes 2
#SBATCH --exclusive

srun --exclusive --nodes=1 -c 16 --ntasks 1 prog1 &
srun --exclusive --nodes=1 -c 16 --ntasks 1 prog2 &
wait