结合xargs parallel和mpirun

时间:2016-07-07 15:43:16

标签: multithreading xargs slurm mpiexec

我有一个在计算群集中运行的令人尴尬的并行(bash)脚本。 该脚本是一个shell脚本,链接到任何MPI库:这意味着我可以向其发送MPI排名的唯一方法是使用命令行参数。

到目前为止,我只在一个节点内执行它,解决方案很简单:

 #!/bin/bash
 #SBATCH --nodes=1
 N=16
 seq $N | xargs -P $N -I% my_script.bash % $N

如何使用两个节点进行缩放?如果我只使用'--nodes = 2'和N=32,那么xargs将尝试在同一节点上生成所有线程。另一方面,我不能单独使用mpiexec:因为脚本没有链接到MPI库,我不知道如何告诉脚本它是哪个线程。

1 个答案:

答案 0 :(得分:1)

您可以在提交脚本中使用srun来执行此操作:

seq $N | xargs -P $N -I% srun --exclusive -N1 my_script.bash % $N

这将使用srun启动bash脚本并将其分发到已分配的CPU。