【问题标题】:gethostname() function missing in openMPIopenMPI 中缺少 gethostname() 函数
【发布时间】:2014-04-06 03:53:23
【问题描述】:

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

之前(使用 mpich2 时)在我的代码中,我使用 gethostname() 函数来获取机器的名称以进行调试。然而,这个函数似乎不是标准的 MPI 函数,并且不再适用于 OpenMPI 库。在 OpenMPI 或 MPI 标准中是否有任何其他功能可以获取主机名?我使用 mpicc 进行编译,使用 mpirun 运行代码。

谢谢,

苏拉布

【问题讨论】:

  • gethostname 不是标准的 MPI 函数。您是否将其与 MPI_Get_processor_name 混淆了?
  • 实际上 gethostname() 以前可以工作,安装 OpenMPI 后它停止工作。我刚刚检查了 MPI_Get_processor_name() 是否正常工作,谢谢。
  • gethostname()的原型在unistd.h。它究竟是如何不使用 Open MPI 的?
  • 我不知道怎么做!我没有包括unistd.h,但是当我只包括mpi.hstdio.hgethostname()正在工作我唯一的解释是gethostname()可能在mpich2mpi.h的某个库中定义.

标签: mpi


【解决方案1】:

gethostname() 定义在 unistd.h 中,在以前的版本中由 mpi.h 包含。这不是您应该依赖的功能,因为您应该始终明确包含定义您使用的符号的文件。显然,您在不知不觉中依赖它。

但是,如果您的 MPI 代码应该只在 POSIX 系统上运行,那么添加它是安全的

#include <unistd.h>

gethostname() 是 POSIX2001.1 标准。

然而,MPI 可移植解决方案是 MPI_Get_processor_name(),如 High Performance Mark

的评论中所示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2016-12-26
    相关资源
    最近更新 更多