MPICH2 gethostbyname 失败

Posted

技术标签:

【中文标题】MPICH2 gethostbyname 失败【英文标题】:MPICH2 gethostbyname failed 【发布时间】:2014-05-31 12:10:34 【问题描述】:

我不明白错误信息。我要做的是在将 mpich2 版本 1.4 或 1.5 安装到 /opt/mpich2 后运行 MPICH2 应用程序(两个版本都失败并出现相同的错误)。我的 MPI 应用程序是用 1.3 编译的,但我可以在另一个工作站上用 mpi 1.4 运行它。我正在 Ubuntu 12.04 上对其进行测试。

Fatal error in PMPI_Init_thread: Other MPI error, error stack:
MPIR_Init_thread(467)..............: 
MPID_Init(177).....................: channel initialization failed
MPIDI_CH3_Init(70).................: 
MPID_nem_init(319).................: 
MPID_nem_tcp_init(171).............: 
MPID_nem_tcp_get_business_card(418): 
MPID_nem_tcp_init(377).............: gethostbyname failed, localhost (errno 3)

【问题讨论】:

【参考方案1】:

由于问题不同,答案可能与我之前为 OpenMPI 给出的答案相同: gethostname() function missing in openMPI

MPI 便携解决方案是使用MPI_Get_processor_name()

【讨论】:

感谢您的回答。我错过了错误消息的第一行。【参考方案2】:

此错误表示解析 localhost 时出现问题。检查您的 /etc/hosts 文件,确保您在此处正确定义了 localhost,它应该指向 127.0.0.1。尝试使用 ssh 连接到 localhost,确保也能正常工作。

【讨论】:

ssh 到 localhost 有效。我会尝试寻找其他的东西,稍后再回来。 这是我必须做的解决这个问题:通过sudo scutil --set HostName 设置一个正确的主机名,然后将新的主机名(比如my_computer.local)添加到/etc/hosts,如127.0.0.1 my_computer.local。此外,您必须在“共享”设置中启用 SSH 访问,并将您的公钥添加到 authorized_keys 文件 (cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys)。【参考方案3】:

对我有用的是:

确保下面 1 和 2 的主机名相同:

    终端主机名 “/etc/hosts”主机名

所以如果你在终端输入cat /etc/hosts 它应该是这样的:

// 127.0.0.1       my_hostname

对于我来说,我的主机名 1 和 2 不同。一旦我将它们更改为匹配,我的 mpi 程序就会执行。

要更改终端主机名,请键入以下内容: sudo scutil --set HostName my_new_host_name

要更改您的 /etc/hosts 主机名,请键入以下内容: sudo nano /etc/hosts

然后添加一行

127.0.0.1       my_new_hostname

【讨论】:

我遇到了这个完全相同的问题(请注意在原始发布后一年多) - 这个答案为我提供了解决方案。 ***.com/questions/42041706/…【参考方案4】:

macOS 解决方案

我在 macOS 10.12.1 上偶然发现了这个问题。

解决方法是将127.0.0.1 computername.local 添加到/etc/hosts。您的文件或多或少会像这样:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
127.0.0.1   computername.local
255.255.255.255 broadcasthost
::1             localhost 

如果您转到系统偏好设置 > 共享 > 计算机名称,您可以更改/检查您的计算机名称。

【讨论】:

就我而言,我的计算机名称不知何故改变了。我认为它应该与您编译和安装 MPI 保持一致。当我把它改回来时,一切正常!但是,仍然感谢您指出正确的方向! 我必须在 MacOS 10.14.6 上添加 127.0.0.1 computername(没有 .local【参考方案5】:

可能你的 /dev/shm 已满,请尝试清理它。

【讨论】:

以上是关于MPICH2 gethostbyname 失败的主要内容,如果未能解决你的问题,请参考以下文章

windows下gethostbyname 调用失败

gethostbyname代码示例(Windows CE)

设置代码块以运行 MPICH2

使用 CMake 编译后无法从 mpich2 使用 mpirun

搭建并行开发环境MPICH2

MPICH2 在本地运行提示无法连接到主机