我认为我遇到了 Infiniband 设置问题。我对设置 Infiniband 或网络不是很有经验。如果我尝试强制 MPICH 使用 IB,我会收到错误:
[Bryan@node1 shared]$ ./mpich-3.3.1/bin/mpiexec -hosts=node1,node2 -iface=ib0 -n 4 ./test
[mpiexec@node1] HYDU_sock_get_iface_ip (../../../../mpich-3.3.1/src/pm/hydra/utils/sock/sock.c:496): unable to find interface ib0
[mpiexec@node1] HYDU_sock_create_and_listen_portstr (../../../../mpich-3.3.1/src/pm/hydra/utils/sock/sock.c:550): unable to get network interface IP
[mpiexec@node1] HYD_pmci_launch_procs (../../../../mpich-3.3.1/src/pm/hydra/pm/pmiserv/pmiserv_pmci.c:114): unable to create PMI port
[mpiexec@node1] main (../../../../mpich-3.3.1/src/pm/hydra/ui/mpich/mpiexec.c:332): process manager returned error launching processes
OpenMPI 存在类似问题。我已经尝试了好几天来解决这个问题。可能是我错过了一些简单的事情。
更多背景信息:
1. 我在两台机器上安装了 Mellanox ConnectX-3 MCX354A-QCBT;节点 1 和节点 2。将端口 1 直接连接到端口 1。没有交换机。没有端口 2 连接。2
. 每台机器都运行 Centos 7。3
. 设置无密码 ssh。4
. 安装了 Mellanox 驱动程序。5
. 在共享文件夹中安装了 MPICH。6
. 我使用 sudo mst start 在两台机器上启动 Mellanox 驱动程序。7
. 我在节点 1 上启动 opensm。它进入主状态。
检查连接,看起来不错:
[Bryan@node1 shared]$ sudo ibnodes
Ca : 0x0002c90300ee7620 ports 2 "node2 HCA-1"
Ca : 0x0002c90300ee69e0 ports 2 "node1 HCA-1"
我也使用 ibping 测试了连接。一切似乎都很好。
我运行了一个测试 MPI 程序,没有强制 IB,运行良好:
[Bryan@node1 shared]$ ./mpich-3.3.1/bin/mpicc -std=c11 MPI_Test.c -o test
[Bryan@node1 shared]$ ./mpich-3.3.1/bin/mpiexec -hosts=node1,node2 -n 4 ./test
Rank 0: Hostname node1
Rank 2: Hostname node1
Rank 1: Hostname node2
Rank 3: Hostname node2
nmcli 显示已断开连接。我以为 MPI 不需要 IB 的 IP 地址,但我还是尝试建立连接:
[Bryan@node1 shared]$ sudo nmcli con add con-name ib0 ifname ib0 type infiniband ip4 10.0.0.1
[sudo] password for Bryan:
Connection 'ib0' (09669a93-98b3-4fcb-9fed-ea65fff65e24) successfully added.
[Bryan@node1 shared]$ nmcli device status
DEVICE TYPE STATE CONNECTION
enp4s0 ethernet connected enp4s0
ib0 infiniband connected ib0
ib1 infiniband unavailable --
[Bryan@node1 shared]$ nmcli device show ib0
GENERAL.DEVICE: ib0
GENERAL.TYPE: infiniband
GENERAL.HWADDR: A0:00:02:20:FE:80:00:00:00:00:00:00:00:02:C9:03:00:EE:69:E1
GENERAL.MTU: 2044
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: ib0
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/54
IP4.ADDRESS[1]: 10.0.0.1/32
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 10.0.0.1/32, nh = 0.0.0.0, mt = 150
IP6.ADDRESS[1]: fe80::7a74:c87f:2d49:2cfc/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 150
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
除了使用 10.0.0.2 作为 IP 外,我对 node2 执行了同样操作。
如果我在设置 IP 后尝试再次强制运行 IB,它将挂起,直到我按下 ctrl+c。我错过了什么?
答案1
按照 Thomas 的建议添加了 --with-device=ch3:nemesis:mxm 后,配置过程告诉我找不到 Mellanox 库。将 --with-mxm=/opt/mellanox/mxm 添加到配置选项解决了这个问题。
该 README 比 mpich.org 上的 mpich-3.3.1-installguide.pdf 更详细