Intel MPI 给出‘通道初始化失败’错误(mpirun)

Intel MPI 给出‘通道初始化失败’错误(mpirun)

我正在尝试设置一个由 3 台服务器组成的小型集群。它们的硬件相同,并且运行的是 CentOS 7。我正在使用 Intel 的集群编译器和 MPI 实现。一切都已设置好:我可以在所有节点之间进行 ssh 而无需密码,并且我已经使用 nfs 共享了 /opt 目录,因此which mpiccwhich mpirun在所有节点上成功。mpirun -hosts node1 -n 24 /home/cluster/test是我尝试运行的命令(测试是从 Intel 编译器的测试目录中的 test.c 编译而来的,并且在所有节点之间通过 nfs 共享)。它在任何单个节点上运行良好,但如果我尝试在多个节点上运行它,我会得到:

[cluster@headnode ~]$ mpirun -hosts headnode -n 10 /home/cluster/test
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(784)...................: 
MPID_Init(1323).........................: channel initialization failed
MPIDI_CH3_Init(141).....................: 
MPID_nem_tcp_post_init(644).............: 
MPID_nem_tcp_connect(1107)..............: 
MPID_nem_tcp_get_addr_port_from_bc(1342): Missing ifname or invalid host/port description in business card

Google 没有给我任何有用的答案。我还设置了一个基本的虚拟机集群 (CentOs 6.5),我得到了完全相同的错误 (所以这不是硬件问题)。

答案1

还要检查/etc/hosts和/或dig headnode确保可以从启动作业的节点正确解析主机名,如果不能,我会在责怪 Intel MPI 之前检查我的集群配置不佳,如果无法正确解析头节点,我怀疑这是否适用于 OpenMPI 或任何其他发行版。进一步验证端口是否打开并在防火墙后可访问,以及 SE Linux/其他安全功能下所有内容是否配置正确将是合乎逻辑的第一步,因为显然节点不可访问。

如果您遇到这些问题并且正在使用 Intel MPI,那么您应该首先使用 Intel MPI 基准测试 (IMB) 进行乒乓测试,并分析结果。我将让您在 Intel 网站上查找运行该测试的语法。Intel 已经编写的测试和基准测试比您能想到的任何测试和基准测试都要好,并且在诊断此问题时会更有用。

答案2

我找到了修复它的方法: https://software.intel.com/en-us/articles/using-intel-mpi-library-and-intel-xeon-phi-coprocessor-tips

基本上,添加-iface [network interface]到 mpirun 参数,或添加export I_MPI_HYDRA_IFACE=[network interface]到 .bashrc

相关内容