-1

我已经花了大约一周的时间来让 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
4

1 回答 1

2

如果我理解正确,您想运行 30 个相同的fib? (首先,您不想要 30srun行(或&) - SLURM 处理多个副本。)

如果是这种情况,您可能只希望在您的提交脚本中包含这样的内容:

#!/bin/bash
#SBATCH --ntasks=30
srun ./fib 3
于 2017-04-16T11:56:39.637 回答