【问题标题】:Hostfile with Mpirun on multinode with slurm带有 slurm 的多节点上带有 Mpirun 的主机文件
【发布时间】:2021-04-02 23:36:12
【问题描述】:

我有两个我想通过以下方式运行的可执行文件: 对于每个节点,我想向 exe1 和 1 个 exe2 启动 N-1 个进程

在以前的 slurm 系统上这样做:

#!/bin/bash -l
#SBATCH --job-name=XXX
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=2
#SBATCH --mem=120GB
#SBATCH --time=04:00:00



module purge
module load intel/compiler/2020.1.217
module load openmpi/intel/4.0.5_2020.1.217


scontrol show hostname $SLURM_JOB_NODELIST | perl -ne 'chomb; print "$_"x1'> myhostall
scontrol show hostname $SLURM_JOB_NODELIST | perl -ne 'chomb; print "$_"x1'>>myhostall

mpirun --mca btl_openib_allow_ib 1 --report-bindings -hostfile myhostall -np 2 ./exe1 : -np 2 ./exe2

在这个例子中,我有两个节点,每个节点有两个任务/节点。因此,exe1 应该从每个节点获得 1 个等级,对于 exe2 也是如此。

如果我说cat myhostall

come-0-12
come-0-13
come-0-12
come-0-13

但在我的代码中,当使用MPI_GET_PROCESSOR_NAME 打印处理器名称时,exe1 都打印come-0-12 和 exe2 都打印come-0-13

所以问题来了:

如何将每个节点的 N 个任务指定给 exe1,将每个节点的 M 个任务指定给 exe2

【问题讨论】:

    标签: mpi hpc slurm


    【解决方案1】:

    您可以指定 2 个主机文件,每个 exe 一个

    例如

    mpirun -np 2 --hostfile hostfile_1 exe1 : -np 2 --hostfile hostfile_2 exe2

    在每个主机文件中,您可以指定每个 exe 将在每个节点上使用多少个插槽。

    例如(在https://www.open-mpi.org/faq/?category=running#mpirun-hostfile 上查看更多信息),如果您希望每个节点的 exe1 和 exe2 都拥有 1 个 CPU,那么 hostfile_1 和 hostfile_2 可以是相同的,甚至可能是同一个文件:

    node1 slots=1
    node2 slots=1
    

    但是,如果 hostsfile_1 和 hostfile_2 包含相同的节点,mpirun 可能会重新分配任务,因为它“认为”更优化。

    另一种方法是指定相同的hosts文件并使用“--map-by node”指令(默认行为是“--map-by slot”),例如:

    mpirun -hostfile hosts.txt -np 2 --map-by node ./exe1 : -hostfile hosts.txt -np 2 --map-by node ./exe2
    

    hosts.txt 包含的位置:

    node1 slots=2
    node2 slots=2
    

    在我的情况下(OpenMPI-4.0.4)

    EXE1 from processor node1, rank 0 out of 4 processors
    EXE1 from processor node2, rank 1 out of 4 processors
    EXE2 from processor node1, rank 2 out of 4 processors
    EXE2 from processor node2, rank 3 out of 4 processors
    

    还可以潜在地使用 rankfiles(如果您使用 OpenMPI)将任务更明确地绑定到特定 CPU,但这可能有点麻烦...

    【讨论】:

    • 谢谢! - 但是你能举个例子说明在这种情况下主机文件的样子吗
    • 添加了主机文件示例和 OpenMPI 常见问题解答的链接
    猜你喜欢
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 2011-08-25
    • 2020-06-30
    • 1970-01-01
    相关资源
    最近更新 更多