如何编写 sbatch 来处理 slurm 中的多个作业

how to write sbatch to handle multiple job in slurm

我有两个可执行文件需要 运行:a.outb.out

(1)我要运行两个节点上的a.out,每个节点有一个a.out进程。

(2) 我想要运行两个节点上的b.out,节点在(1)中是相同的,但是每个节点有两个b.out进程。

我的原始代码如下所示

#!/bin/bash
#SBATCH --nodes 2
#SBATCH --ntasks-per-node 2

srun a.out
srun b.out

但无法满足以上需求。我该如何编写 sbatch 来实现?

如果这是一个愚蠢的问题,我深表歉意。感谢您的宝贵时间。

假设我们有 3 个节点,想要 运行 第一份作业 A 和作业 B。 作业 A 应该 运行 在每个节点上有 1 个进程。 作业 B 应该 运行 每个节点上有 5 个进程。

因此sbatch文件sbatch_input.sh可以这样写:

#!/bin/bash
#SBATCH --nodes 3
#SBATCH --ntasks-per-node 5
#SBATCH -p cnall

# job A
srun --nodes 3 --ntasks=3 hostname
echo "-------------------------------"
# job B
srun --nodes 3 --ntasks-per-node=5 hostname

运行 带有 sbatch 的脚本

sbatch ./sbatch_input.sh

结果表明

c05b01n06
c05b01n08
c05b01n07
-------------------------------
c05b01n06
c05b01n08
c05b01n07
c05b01n06
c05b01n06
c05b01n06
c05b01n06
c05b01n08
c05b01n08
c05b01n08
c05b01n08
c05b01n07
c05b01n07
c05b01n07
c05b01n07

这里不使用问题中的数字2以防误解。

  • 参考

https://slurm.schedmd.com/srun.html