2014-03-04 57 views
0

由于OpenMPI上OpenFOAM的依赖性,我必须用OpenMPI替换mpich2。openMPI中缺少gethostname()函数

以前(当使用mpich2)在我的代码中我使用gethostname()函数来获取计算机的名称以进行调试。但是,这个函数似乎不是一个标准的MPI函数,并且不再适用于OpenMPI库。在OpenMPI或MPI标准中有没有其他函数可以获取主机名?我正在使用mpicc进行编译并使用mpirun来运行代码。

感谢,

Sourabh

+1

'gethostname'所示的评论是不是一个标准的MPI函数。你是否用'MPI_Get_processor_name'来混淆它? –

+0

实际上,gethostname()在安装OpenMPI后停止工作,之前用于工作。我刚刚检查MPI_Get_processor_name()正在工作,谢谢。 –

+0

'gethostname()'的原型在'unistd.h'中。它究竟与Open MPI无关? –

回答

4

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

但是,如果你的MPI代码应该在POSIX系统上只运行,其安全地添加

#include <unistd.h> 

gethostname()是POSIX2001.1标准。

然而,MPI便携式解决方案是MPI_Get_processor_name()高性能马克