MPICH2 gethostbyname失败

bio*_*man 24 mpi mpich

我不明白错误信息.我试图做的是在我安装mpich2版本1.4或1.5后运行MPICH2应用程序/opt/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)
Run Code Online (Sandbox Code Playgroud)

Mat*_*ski 16

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 
Run Code Online (Sandbox Code Playgroud)

如果转到" 系统首选项" >" 共享" >" 计算机名",则可以更改/检查计算机的名称.


Tim*_*ula 13

对我有用的是:

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

  1. 终端主机名
  2. "/ etc/hosts"主机名

因此,如果您输入cat /etc/hosts终端,它应该如下所示:

// 127.0.0.1       my_hostname
Run Code Online (Sandbox Code Playgroud)

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

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

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

然后添加该行

127.0.0.1       my_new_hostname
Run Code Online (Sandbox Code Playgroud)


小智 6

此错误表示解析localhost时出现问题.检查你的/ etc/hosts文件,确保你在这里正确定义了localhost,它应该指向127.0.0.1.尝试使用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`). (5认同)

Sig*_*ndo 2

由于问题不同,答案可能与我之前为 OpenMPI 给出的答案相同: openMPI 中缺少 gethostname() 函数

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