如何在MPI中获取指定主机文件中的<rank,hostname>对

问题描述 投票:0回答:1

运行MPI程序时,我们使用命令

mpiexec -hostfile ./conf/machines <my_mpi_program>

我的主机文件

./conf/machines

192.168.1.54
192.168.1.55
192.168.1.56
192.168.1.57

当执行 MPI 程序时,我的处理器排名为

MPI_Comm_rank

我的问题是如何获得每个等级的
<rank, hostname>
对?
hostname
应该与我指定的主机文件相同,我只想使用ip地址作为主机文件中的主机名。

我尝试使用

MPI_Get_processor_name
但它返回了我的主机的名称
teaker-4
,而不是指定主机文件中的名称。

还有,

teaker-4
127.0.0.1
,我无法修改
/etc/hosts

mpi
1个回答
0
投票

我希望这就是你想要的,尽管有点晚: 我在我的 mpi 程序中使用这种方法: ..通常的 mpi fortran 设置使用.. decalare ..包括: 使用,内在 :: iso_c_binding 使用 mpi 隐式无 界面 函数 gethostid() BIND(C) 使用 iso_c_binding 整数 (C_INT) :: gethostid 结束函数 gethostid 终端接口 ..然后是通常的更多声明和赋值,直到 mpi 开始.. !在 PGI OpenACC 和 MPI 教程之后使用 cpu 进程等级到 GPU id 映射!版本 2017 | 4 调用 MPI_INIT(ierr2) !获取 hostid,以便我们可以确定每个节点上有哪些 mpi 进程 主机id=gethostid() ..我怀疑你可以从那里以编程方式解决它。

© www.soinside.com 2019 - 2024. All rights reserved.