结合并行和多个 Xargs
Combining xargs parallel and mpirun
我有一个令人尴尬的并行 (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
库,而且我不知道如何告诉脚本它是哪个线程。
您可以在提交脚本中使用 srun
来做到这一点:
seq $N | xargs -P $N -I% srun --exclusive -N1 my_script.bash % $N
这将使用 srun
启动您的 bash 脚本并将其分配给分配的 CPU。
我有一个令人尴尬的并行 (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
库,而且我不知道如何告诉脚本它是哪个线程。
您可以在提交脚本中使用 srun
来做到这一点:
seq $N | xargs -P $N -I% srun --exclusive -N1 my_script.bash % $N
这将使用 srun
启动您的 bash 脚本并将其分配给分配的 CPU。