首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sbatch+srun:大量单线程作业

sbatch+srun:大量单线程作业
EN

Stack Overflow用户
提问于 2020-01-24 20:43:19
回答 1查看 462关注 0票数 3

大家好,友好的人们,

我的问题相当具体。

在一个多星期的时间里,我尝试使用sbatch和srun为科学实验提交数千个单线程作业。

问题是,这些作业可能需要不同的时间才能完成,有些作业甚至可能会因为超出内存限制而中止。这两种行为都很好,我的评估处理了它。

但是,我面临的问题是,有些作业即使提交了,也从来没有开始。

我的sbatch脚本如下所示:

代码语言:javascript
复制
#!/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

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

代码语言:javascript
复制
srun: Job 1846955 step creation temporarily disabled, retrying

1) 'step creation temporarily‘是什么意思?是否所有cpu都很忙,作业被省略了,还是稍后在资源空闲时重新启动?

2)为什么我的一些工作没有执行,我如何修复它?我是否为srun使用了正确的参数?

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2020-01-24 23:57:35

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

这很正常,您需要保留4个12个CPU并启动500个srun实例。只有48个实例将运行,而其他实例将输出该消息。每当正在运行的实例停止时,挂起的实例就会启动。

等待5s

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

因此,脚本应该如下所示:

代码语言:javascript
复制
#!/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 &   

done
wait
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59896660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档