首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用其他SLURM的主SLURM脚本

调用其他SLURM的主SLURM脚本
EN

Stack Overflow用户
提问于 2018-12-07 03:11:35
回答 1查看 144关注 0票数 2

我是一名癌症研究人员,我们想知道你们中是否有人知道如何编写一个调用其他SLURM的SLURM脚本。如果上一个脚本成功完成,则继续执行下一个调用。也就是说,类似于:

代码语言:javascript
复制
#!/bin/bash
#SBATCH --nodes=1 
#SBATCH --tasks-per-node=1
#SBATCH --time=24:00:00
#SBATCH --mem=40GB?
#SBATCH --job-name=Master_script
#call first slurm
sbatch a.slurm
#if it completes successfully
if a.slurm:
   sbatch b.slurm
   if b.slurm:
      sbatch c.slurm
      sbatch d.slurm
      if c.slurm:
          sbatch e.slurm
      else:
         echo "c.slurm did not complete successfully"
   else:
      echo "b.slurm did not complete successfully"
else:
    echo "a.slurm did not complete successfully"
EN

回答 1

Stack Overflow用户

发布于 2018-12-07 16:54:45

您可以使用sbatch--dependency选项提交这5个作业。

manpage

依赖关系,-d =将此作业的启动推迟到满足指定的依赖关系完成为止。

在你的例子中,它是这样的:

代码语言:javascript
复制
A=$(sbatch --parsable a.slurm)
B=$(sbatch --parsable --dependency=afterok:$A a.slurm)    
C=$(sbatch --parsable --dependency=afterok:$B a.slurm)    
D=$(sbatch --parsable --dependency=afterok:$B a.slurm)    
E=$(sbatch --parsable --dependency=afterok:$D a.slurm)    

请注意,在这种情况下,如果依赖作业失败,依赖于其他作业的作业将无限期地保持挂起状态。你要么手动清理它们,要么提交空作业,以防作业因--dependency=afternotok:...而失败。

如果您的工作流程变得更加复杂,那么研究BoscoFireworksworkflow managers的使用可能会很有趣。

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

https://stackoverflow.com/questions/53658169

复制
相关文章

相似问题

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