我已经花了大约一周的时间来让 sbatch 作业脚本提交到多个节点。我有两个带有 (2)sockets (12)cores/socket (2)threads/core 的计算节点。我有一个简单的 c 程序来计算斐波那契数列(没有多线程或 mpi 只是一个单进程单核程序)。
现在我有脚本 fib.sh,其中包含 30 行“srun ./fibonacci &”,我做 ./fib.sh 第一个 12 个作业在第一个节点 1 上运行,接下来的 12 个在另一个节点 2 上运行,其余的正在等待状态这是我想要的。
但是,当我尝试使用 sbatch 获得相同的行为时,所有任务都在 node1 上运行,这不是我想要的。我使用 -n1 -N2, --cpus-per-task=1 调整了#SBATCH 标志,但没有得到想要的结果。如果有人能对此有所了解,我将不胜感激。
如果需要,以下是我的 slurm.conf 的一部分
# SCHEDULING
FastSchedule=1
SchedulerType=sched/backfill
SelectType=select/cons_res
SelectTypeParameters=CR_Core
NodeName=node[1-2] Sockets=2 CoresPerSocket=12 ThreadsPerCore=2 State=UNKNOWN
PartitionName=debug Nodes=node[1-2] Default=YES MaxTime=INFINITE State=UP
下面是sbatch脚本
#!/bin/bash
# SBATCH --cpus-per-task=30
#SBATCH --ntasks-per-core=1
#run ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
srun ./fib 3 &
wait