【问题标题】:LSF Job Array in Make File生成文件中的 LSF 作业数组
【发布时间】:2017-03-23 12:22:40
【问题描述】:

我正在运行 LSF 作业数组以在生成文件中创建目标。 但是,一旦提交数组,make 就会考虑执行目标的命令,并由于目标不存在而引发错误。

如何强制 make 等到 LSF 作业数组完成后再移动到其他依赖目标?

例子:

all: final.txt

first_%.txt:
    bsub -J" "jarray[1-100]" < script.sh

final.txt: first_%.txt
    cat first_1.txt first_50.txt first_100.txt > final.txt

很遗憾,作业数组不支持 -K 标志。

【问题讨论】:

  • 它需要是一个makefile吗?潜在地,您可以使用作业依赖项在作业中执行cat ... &gt; final.txt。或者,也许您可​​以保留 makefile 并使用 bsub -K 来完成最后的工作。这样,final.txt 的规则仍然会阻塞,直到完成。

标签: makefile lsf


【解决方案1】:

尝试bsub -K,它会强制 bsub 停留在前台,直到作业完成。

编辑

由于数组不支持该选项,我认为您必须将数组作为单独的作业提交,例如:

for i in `seq 1 100`; do 
            export INDEX=$i
            bsub -K < script.sh & 
done
wait

您必须手动将索引传递给脚本,而不是使用作业数组索引。

【讨论】:

  • bsub -K 不适用于作业数组。 "作业数组不支持 -K 选项。作业未提交。"
  • aha,在那种情况下,您不会很喜欢我将添加的其他解决方案,但这是我能想到的全部......
【解决方案2】:

您需要让bsub 命令等待作业完成。我从来没有用过,但是根据the man page你可以添加-K选项来做到这一点。

【讨论】:

  • bsub -K 不适用于作业数组。 "作业数组不支持 -K 选项。作业未提交。"
  • 那太糟糕了。好吧,你必须想办法让你的食谱等到一切都完成。 make 对此无能为力:您需要通过配方中的一些脚本或其他方式来解决这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多