如何编写 sbatch 来处理 slurm 中的多个作业
how to write sbatch to handle multiple job in slurm
我有两个可执行文件需要 运行:a.out
和 b.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
我有两个可执行文件需要 运行:a.out
和 b.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