openMPI中缺少gethostname()函数

时间:2014-03-04 14:37:22

标签: mpi

由于OpenFOAM对OpenMPI的依赖,我不得不用OpenMPI替换mpich2。

在我的代码中早些时候(当使用mpich2时)我使用gethostname()函数来获取用于调试目的的机器名称。但是,此功能似乎不是标准的MPI功能,并且不再适用于OpenMPI库。在OpenMPI或MPI标准中获取主机名是否还有其他功能?我使用mpicc进行编译,使用mpirun运行代码。

谢谢,

Sourabh

1 个答案:

答案 0 :(得分:4)

gethostname()unistd.h中定义,mpi.h包含在之前的版本中。这不是您应该依赖的功能,因为您应该始终明确包含定义您使用的符号的文件。很明显,你没有意识到它依赖它。

但是,如果您的MPI代码只能在POSIX系统上运行,则可以安全地添加

#include <unistd.h>

gethostname()是POSIX2001.1标准。

然而,MPI便携式解决方案为MPI_Get_processor_name(),如高性能标记

中的评论所示