我正在尝试在2台不同的PC上执行MPI程序。但是,当我在pc1中运行此命令时:
mpirun -hosts user@host -n 4 bin/Demo_01.exe
我收到了这个错误:
[proxy:0:0@pc2] HYDU_sock_connect (./utils/sock/sock.c:203): unable to connect from "pc2" to "pc1" (Connection refused)
[proxy:0:0@pc2] main (./pm/pmiserv/pmip.c:209): unable to connect to server ubuntu at port 57395 (check for firewalls!)
虽然我将SSH连接配置为没有密码并且在每台计算机上都禁用了防火墙,但错误仍然存在。我的操作系统是Ubuntu 12.04,mpi是MPICH2。
有人可以帮忙吗?
答案 0 :(得分:2)
错误是由客户端没有连接回服务器引起的,因为它不知道服务器的IP,即
..main (./pm/pmiserv/pmip.c:209): unable to connect to server ubuntu at...etc
修复是在/etc/hosts
中添加每个主机名和相关的IP,即
172.17.0.2 master
172.17.0.3 node1
172.17.0.4 node2
这应该允许主节点和节点客户端的双向通信
答案 1 :(得分:1)
我有同样的错误,但接受的答案对我没有帮助。
对于我在hosts文件中我有:
本地主机:8
CPUX:2
我应该:
CPUZ:8
CPUX:2
即节点的名称而不是localhost。也许这可能对某人有所帮助。
答案 2 :(得分:0)
固定。在我按照这些步骤操作后,错误消失了:
答案 3 :(得分:0)
montekristo_07的回答大部分是正确的,但不是最小的;步骤#2和#3并非绝对必要。
您不需要不需要编辑所有主机的/ etc / hosts文件,并且,如果您的LAN使用DHCP并且您正在运行任何本地DNS服务,则您不应编辑所有您主机的/ etc / hosts文件。
确保:
一个简单的测试是在mpiexec命令行中使用原义IP地址。如果这可以解决您的问题,那么这是主机名解析问题...某处。
要记住的重要一点是,将在mpiexec命令行上传递的内容(尤其是主机名)将发送到远程主机并在其上进行解析