【发布时间】:2018-12-12 17:20:33
【问题描述】:
我想在一个 sbatch 脚本中使用 srun 命令在集群上运行大约 200 次脚本。由于执行脚本需要一些时间,因此最好将任务均匀地分布在集群中的节点上。可悲的是,我对此有疑问。
现在,我创建了一个示例脚本(“hostname.sh”)来测试 sbatch 脚本中的不同参数:
echo `date +%s` `hostname`
sleep 10
这是我的 sbatch 脚本:
#SBATCH --ntasks=15
#SBATCH --cpus-per-task=16
for i in `seq 200`; do
srun -n1 -N1 bash hostname.sh &
done
wait
我希望 hostname.sh 被执行 200 次(for 循环),但只有 15 个任务同时运行(--ntasks=15)。由于我最大的节点有 56 个内核,因此只有三个作业应该能够同时在该节点上运行(--cpus-per-task=16)。
从脚本的输出中,我可以看到前九个任务分布在集群的九个节点上,但所有其他任务(191 个!)同时在一个节点上执行。整个 sbatch 脚本执行只用了大约 15 秒。
我想我误解了 slurm 的一些参数,但查看官方文档并没有帮助我。
【问题讨论】:
标签: slurm