我有一个简单的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:拒绝连接
/etc/hosts
已正确配置。答案 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