【问题标题】:sbatch+srun: Large amount of single thread jobssbatch+srun:大量单线程作业
【发布时间】:2020-01-24 12:43:19
【问题描述】:

大家好,

我的问题比较具体。

一个多星期以来,我一直在尝试使用 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 使用了正确的参数?

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

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

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

    等待 5 秒

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

    所以脚本应该是这样的:

    #!/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
    

    【讨论】:

    • 谢谢,我很确定缺少的最终等待语句是问题所在!
    • 如果你觉得这个答案解决了你的问题,请考虑accepting it
    猜你喜欢
    • 1970-01-01
    • 2017-10-01
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2015-02-17
    • 2021-05-11
    相关资源
    最近更新 更多