2017-03-23 37 views
0

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

如何强制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标志不支持工作阵列。

+0

它需要成为一个makefile吗?潜在地,你可以使用作业依赖关系在作业中执行'cat ...> final.txt'。或者也许你可以保留makefile并使用'bsub -K'来完成最后的工作。这样,final.txt的规则仍会阻塞,直到完成。 –

回答

1

尝试bsub -K这应该强制bsub留在前台直到作业完成。

编辑

由于该选项不支持数组,我认为你必须提交您的数组作为单独的作业,一样的东西:

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

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

+0

bsub -K不适用于作业数组。 “作业数组不支持-K选项,作业未提交。” – par

+0

aha,在这种情况下,你不会很喜欢我将添加的其他解决方案,但这是我能想到的所有... – Squirrel

0

您需要询问bsub命令以等待作业完成。我从来没有使用它,但根据the man page,您可以添加-K选项来执行此操作。

+0

bsub -K不适用于作业数组。 “作业数组不支持-K选项,作业未提交。” – par

+0

这太糟糕了。那么,你必须找到一种方法来让你的食谱等到一切完成。在这里没有任何“make”可以帮助您:您需要通过您的配方中的某些脚本或其他东西来解决这个问题。 – MadScientist