我不得不将mpich2替换为OpenMPI,因为OpenFOAM依赖于OpenMPI。
在我的代码中(使用mpich2)之前,我使用gethostname()函数来获得机器的名称,以便进行调试。然而,这个函数似乎不是一个标准的MPI函数,并且不再与OpenMPI库一起工作。在OpenMPI或MPI标准中是否还有其他函数来获取主机名?我使用mpicc编译,mpirun运行代码。
谢谢,
苏拉布
发布于 2014-03-05 19:21:20
gethostname()是在unistd.h中定义的,它是由mpi.h在以前版本中包含的。这不是您应该依赖的特性,因为您应该始终显式地包含定义您使用的符号的文件。很明显你是在不知不觉地依赖它。
但是,如果您的MPI代码应该只在POSIX系统上运行,则可以安全地添加
#include <unistd.h>gethostname()是POSIX2001.1标准。
然而,MPI可移植解决方案是MPI_Get_processor_name(),如高性能标记的注释所示
https://stackoverflow.com/questions/22174901
复制相似问题