我最近转向 slurm 并寻找一个作业提交工具,其行为类似于 qsub:
- 它通过管道获取输入
- 它将输出打印到标准输出
例子:
for n in `seq 1 10`; do
echo "echo $n" | qsub
done
应该将每个 echo 命令发送到集群,并且输出应该是 1..10(大概按随机顺序)。
到目前为止我可以
- 使用 sbatch 并行发送作业,但不确定是否将输出输出到 stdout
- 使用 srun 发送作业,然后它会按顺序一一操作
有什么建议么?
答案1
未经测试:
seq 10 | parallel -j0 -q srun 'echo begin {};sleep 0.{};echo done {}'
如果有效,请使用--keep-order
以使输出保持正确的顺序:
seq 10 | parallel -j0 -q --keep-order srun 'echo begin {};sleep 0.{};echo done {}'