sbatch + srun:大量单线程作业

时间:2020-01-24 12:43:19

标签: shell cluster-computing slurm single-threaded sbatch

友好的人,

我的问题很具体。

一个多星期以来,我正尝试使用sbatch和srun提交数千个单线程作业以进行科学实验。

问题在于这些作业可能需要花费不同的时间才能完成,有些作业甚至会超过内存限制而中止。两种行为都很好,我的评估也解决了。

但是,我面临的一个问题是,即使已经提交了一些工作,也从未开始。

我的sbatch脚本如下:

#!/usr/bin/bash
#SBATCH --nodes=4
#SBATCH --tasks-per-node=12
#SBATCH --mem-per-cpu=10000

for i in {1..500}
do

   srun -N1 -n1 -c1 --exclusive --time=60 ${mybinary} $i &   
   wait 5s

done

现在,我的错误日志显示以下消息:

srun: Job 1846955 step creation temporarily disabled, retrying

1)“暂时禁用步骤创建”是什么意思?是不是所有的CPU都很忙,并且作业被忽略了?还是在资源空闲时重新开始?

2)为什么我的某些工作没有执行,我该如何解决? srun是否使用正确的参数?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

运行:作业1846955步骤创建被暂时禁用,正在重试

这是正常的,您保留4 x 12个CPU并启动500个ComponentIds实例。仅将运行48个实例,而另一个将输出该消息。每当运行中的实例停止运行时,挂起的实例就会启动。

等待5秒

srun命令用于等待进程,而不是等待一定的时间。为此,请使用wait命令。 sleep命令必须在脚本的末尾。否则,作业可能会在所有wait个实例完成之前停止。

因此该股票应如下所示:

srun