MPICH通信失败

时间:2013-01-28 21:03:50

标签: c++ linux communication mpich

我有一个简单的MPICH程序,其中进程发送&以Ring顺序接收来自彼此的消息 我已经设置了2个相同的虚拟机,并确保网络正常工作。我已经测试了两台机器的简单MPICH程序,它运行正常。 当我尝试在不同机器上的进程之间进行通信时出现问题,如上述程序。我收到以下错误:

  

MPI_Send中的致命错误:进程失败,错误堆栈:
  MPI_Send(171)...............:MPI_Send(buf = 0xbfed8c08,count = 1,MPI_INT,dest = 1,
  tag = 1,MPI_COMM_WORLD)失败   MPID_nem_tcp_connpoll(1826):通信错误,等级1:拒绝连接

  • SSH无密码&双方都很好。
  • /etc/hosts已正确配置。
  • 两台计算机上都禁用了防火墙。
  • 配置NFS客户端/服务器并在它们之间共享目录。 (根据this
  • 尝试了MPICH&使用Hydra的OpenMPI

1 个答案:

答案 0 :(得分:2)

我在这做了什么,它的确有效!

使用源代码(tarball)安装在包之后

hydra 
openmpi

创建主机文件(两个节点)

# cat /home/spatel/mpi/hydra/hosts
node1
node2 

在.bashrc中设置变量(两个节点)

echo HYDRA_HOST_FILE=/home/spatel/mpi/hydra/hosts >> ~/.bashrc

使用HelloWorld MPI程序在单个节点上运行。

node1# /home/spatel/mpi/hydra/bin/mpiexec -np 1 /home/spatel/mpi/mpi_hello_world
Hello world from processor node1.example.com, rank 0 out of 1 processors

使用-machinefile选项-np在多个节点上运行是处理器数

node1# /home/spatel/mpi/hydra/bin/mpiexec -np 4 -machinefile /home/spatel/mpi/hydra/hosts /home/spatel/mpi/mpi_hello_world
Hello world from processor node1.example.com, rank 0 out of 1 processors
Hello world from processor node2.example.com, rank 0 out of 1 processors
Hello world from processor node1.example.com, rank 0 out of 1 processors
Hello world from processor node2.example.com, rank 0 out of 1 processors