我想使用 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)