如何将 gnu-parallel 用于嵌套循环,内部循环取决于外部循环



我想使用 gnu-parallel 来并行化以下代码片段

for a in `seq 5` ; do
    for b in `seq $a` ; do
        echo $a $b
    done
done

这是否可以使用类似的东西来实现

parallel echo {1} {2} ::: $(seq 5) ::: $(seq {1})

上述语法不起作用。

赋予动机:

我想使用并行来向集群提交许多作业,如此处所述http://docs.rcc.uchicago.edu/software/scheduler/parallel/README.html

GNU Parallel 可以做笛卡尔乘积。你想要的是其中的一半(产品的下三角形)。GNU Parallel 不能直接做到这一点。所以你将不得不跳过上三角形:

parallel [ {2} -gt {1} ] '||' echo {1} {2} ::: $(seq 5) ::: $(seq 5)

对于更复杂的任务,请使用 $job->skip():

parallel echo {=1' $arg[2] > $arg[1] and $job->skip();' =} {2} ::: $(seq 5) ::: $(seq 5)

相关内容

  • 没有找到相关文章

最新更新