我经常(但并不总是)在切换wifi主机后运行MPI作业时出现以下错误。
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(498)..............:
MPID_Init(187).....................: channel initialization failed
MPIDI_CH3_Init(89).................:
MPID_nem_init(320).................:
MPID_nem_tcp_init(171).............:
MPID_nem_tcp_get_business_card(418):
MPID_nem_tcp_init(377).............: gethostbyname failed, MacBook-Pro.local (errno 1)
咖啡店里的一切都很好,然后当我回到家时,我得到了上述错误。没有其他改变。
我已经检查了/ etc / hosts和/ private / 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
255.255.255.255 broadcasthost
我可以ping localhost,所以问题并不完全是localhost没有解决。
重新启动始终可以解决问题,但是我能做些什么来简化"重置"我的系统,以便它识别本地主机?
我无法访问我正在运行的代码中的MPI初始化例程的详细信息,并且没有对gethostname进行任何显式调用。
我正在使用MPICH 3.1.4(建于2015年2月)并且正在运行OSX 10.10.3
答案 0 :(得分:8)
答案很简单 - 这似乎是有效的。
我在OSX中编辑了文件/etc/hosts
(或/private/etc/hosts
)并添加了行
127.0.0.1 macbook-pro.local
所以现在我的主机文件看起来像:
##
# 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
255.255.255.255 broadcasthost
127.0.0.1 macbook-pro.local
答案 1 :(得分:1)
我们在CI服务器上间歇性地遇到此问题。似乎将环境变量MPICH_INTERFACE_HOSTNAME
设置为localhost
很有帮助。