我已经浏览了很多示例,但我仍然感到困惑。我从here编译了一个简单的延迟检查程序,它在一台主机上完美运行,但是当我尝试在两台主机上运行它时,它会挂起。然而,运行像hostname
运行正常:在两台主机上运行MPI
[[email protected] latency]$ mpirun --report-bindings --hostfile hostfile --rankfile rankfile -np 2 hostname
[4:16622] [[5908,0],0] odls:default:fork binding child [[5908,1],0] to slot_list 0
4
[5:12661] [[5908,0],1] odls:default:fork binding child [[5908,1],1] to slot_list 0
5
但这里是编译延迟程序:
[[email protected] latency]$ mpirun --report-bindings --hostfile hostfile --rankfile rankfile -np 2 latency
[4:16543] [[5989,0],0] odls:default:fork binding child [[5989,1],0] to slot_list 0
[5:12582] [[5989,0],1] odls:default:fork binding child [[5989,1],1] to slot_list 0
[4][[5989,1],0][btl_tcp_endpoint.c:638:mca_btl_tcp_endpoint_complete_connect] connect() to 10.0.2.5 failed: Connection timed out (110)
我目前的猜测是有什么毛病我的防火墙规则(如主机名不沟通主机之间,但延迟程序)。
[[email protected] latency]$ cat rankfile
rank 0=10.0.2.4 slot=0
rank 1=10.0.2.5 slot=0
[[email protected] latency]$ cat hostfile
10.0.2.4 slots=2
10.0.2.5 slots=2
这就是'tcp' BTL组件试图建立以开始发送邮件和失败的节点'4'和节点'5'之间的连接。你的分析是正确的 - 'hostname'不会进行MPI通信,这就是为什么它能正常工作。只需指示您的防火墙都接受来自其他主机的连接。 – 2013-02-25 18:04:27
Hristo - 如果您想回复作为答案,我会很高兴接受它!关闭LAN内的IPTables工作正常! – Hamy 2013-02-25 18:05:46
你去了哪里 - 回答你的具体问题和一些其他信息,这些信息可能适用于那些遇到同样问题但出于不同原因的其他人。 – 2013-02-25 18:22:47