2

我有一个简单的 MPICH 程序,其中进程以环形顺序相互发送和接收消息。
我已经设置了 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 客户端/服务器并在它们之间共享一个目录。(据此
  • 使用 Hydra 尝试了 MPICH 和 OpenMPI
4

1 回答 1

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
于 2013-01-29T16:02:20.973 回答