由于OpenFOAM对OpenMPI的依赖,我不得不用OpenMPI替换mpich2。
在我的代码中早些时候(当使用mpich2时)我使用gethostname()函数来获取用于调试目的的机器名称。但是,此功能似乎不是标准的MPI功能,并且不再适用于OpenMPI库。在OpenMPI或MPI标准中获取主机名是否还有其他功能?我使用mpicc进行编译,使用mpirun运行代码。
谢谢,
Sourabh
答案 0 :(得分:4)
gethostname()
在unistd.h
中定义,mpi.h
包含在之前的版本中。这不是您应该依赖的功能,因为您应该始终明确包含定义您使用的符号的文件。很明显,你没有意识到它依赖它。
但是,如果您的MPI代码只能在POSIX系统上运行,则可以安全地添加
#include <unistd.h>
gethostname()
是POSIX2001.1标准。
然而,MPI便携式解决方案为MPI_Get_processor_name()
,如高性能标记