Cluster computing LSF(bsub):如何指定单个;“总结”;所有其他作业完成后要运行的作业?

Cluster computing LSF(bsub):如何指定单个;“总结”;所有其他作业完成后要运行的作业?,cluster-computing,lsf,Cluster Computing,Lsf,基本问题:我想将N+1个作业提交到LSF管理的Linux集群,这样,在前面的N个作业完成之前,(N+1)-st“wrap-up”作业不会运行 额外:如果可能的话,如果我能安排事情,使(N+1)-st(“wrap up”)作业作为其第一个参数接收一个值0(比如说),如果之前的所有N个作业成功终止,则接收一个不同于0的值 这个问题(或者至少是标记为“基本问题”的部分)比LSF的bsub似乎要处理的问题要简单得多,因此我很难仔细阅读bsub的大量文档,找出最简单的方法来做我想做的事情 实现这种安排的最

基本问题:我想将N+1个作业提交到LSF管理的Linux集群,这样,在前面的N个作业完成之前,(N+1)-st“wrap-up”作业不会运行

额外:如果可能的话,如果我能安排事情,使(N+1)-st(“wrap up”)作业作为其第一个参数接收一个值0(比如说),如果之前的所有N个作业成功终止,则接收一个不同于0的值

这个问题(或者至少是标记为“基本问题”的部分)比LSF的
bsub
似乎要处理的问题要简单得多,因此我很难仔细阅读
bsub
的大量文档,找出最简单的方法来做我想做的事情

实现这种安排的最简单的
bsub
命令是什么


更具体地说,我需要用什么来替换下面的各种
插槽,以确保
wrapup
仅在所有
foo
作业完成后执行(理想情况下使用反映
foo
作业结束状态的参数)


为了扩展Michael Closson的答案,您在这里寻找的是bsub的-w选项,它允许您提交一个作业,该作业只有在满足某些依赖条件时才会被安排

最常用的条件是其他作业的退出状态,如果您使用-J命名每个“foo$i”作业:

bsub -q someq -J "job_1" foo 1
bsub -q someq -J "job_2" foo 2
bsub -q someq -J "job_3" foo 3
然后,您可以根据这些作业的退出状态提交另一个作业,如下所示:

bsub -q someq -w "done(job_1) && done(job_2) && done(job_3)" wrapup
这告诉LSF,如果名为job_1、job_2和job_3的作业以“完成”状态终止,则仅调度“wrapup”。您还可以使用作业id而不是作业名称,或者使用以下表达式指定要测试的特定状态:

done("job_1")   // termination status is DONE
exit("job_1")   // termination status is EXIT
ended("job_1")  // termination status is EXIT or DONE

并将这些与逻辑运算符&,| |

作业依赖关系?b sub-J“myjob[1-10]”mycmd;b sub-w myjob wrapup;bjdepinfo-l如果job_1是数组job_1[1-1000],那么数组中的所有作业是否都必须完成才能计算为真(“job_1”)?@par是的,我认为是这样。您可以使用诸如“done(job_1[27])这样的语法来编写对特定元素的依赖关系,以依赖于特定元素,或者您可以拥有一个逐点依赖关系,其中数组job_2[1-1000]的每个元素都可以依赖于job_1的对应元素,方法是在job_2的依赖关系表达式中使用“done(job_1[*])。看见
done("job_1")   // termination status is DONE
exit("job_1")   // termination status is EXIT
ended("job_1")  // termination status is EXIT or DONE