c++ - MPICH 通信失败

标签 c++ linux communication mpich

我有一个简单的 MPICH 程序,其中进程按响铃顺序相互发送和接收消息。
我已经设置了 2 个相同的虚拟机,并确保网络工作正常。我已经在两台机器上测试了一个简单的 MPICH 程序,它运行良好。 当我尝试在不同机器上的进程之间进行通信(如上面的程序)时,问题就出现了。我收到以下错误:

Fatal error in MPI_Send: A process has failed, error stack:
MPI_Send(171)...............: MPI_Send(buf=0xbfed8c08, count=1, MPI_INT, dest=1,
tag=1, MPI_COMM_WORLD) failed
MPID_nem_tcp_connpoll(1826): Communication error with rank 1: Connection refused

  • SSH 无需密码,双方都能正常工作。
  • /etc/hosts 配置正确。
  • 两台计算机上的防火墙均已禁用。
  • 配置了 NFS 客户端/服务器并在它们之间共享一个目录。 (根据this)
  • 使用 Hydra 尝试过 MPICH 和 OpenMPI

最佳答案

这就是我所做的,它有效!

使用源代码(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

关于c++ - MPICH 通信失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14571203/

相关文章:

c++ - qt openGL - 球体变形

c++ - 多个类文件 C++

linux - Linux 中处理器间通信的最佳方式是什么?

c++ - 指数导致的总和

linux - SystemOut.log 文件字符串搜索、计数并在计数达到 10 时通过电子邮件发出警报

c - ipoib : Check if an infiniband node with an given iboip is reachable

regex - 如何从 Bash 中的字符串中删除重复字符?

Java线程间通信不传递消息对象

selenium - Selenium 可以与现有的浏览器 session 交互吗?

c++ - 调用打开文件对话框后文件写入不起作用