我有 10 台服务器,每台服务器有两个 CPU,每个 CPU 有一个 Mellanox 100G Infiniband NIC。每个 NIC 都连接到单个 Mellanox 36 端口 100G IB 交换机。
我的 RDMA 应用程序在每个 NUMA 节点上作为一个进程运行,并绑定到本地 NIC 以避免跨 CPU 流量。每个节点/进程都需要使用 RC 模式连接到其他每个节点。
我遇到的问题是,默认的 OpenSM 路由似乎迫使我使用某个 NIC 来到达某个目标节点。因此,我必须使用两个 NUMA 节点的两个 NIC 来到达所有其他节点。这意味着我还需要两个 PD,必须将所有内存注册两次。
有没有什么办法可以让单个 NIC 能够连接到网络上的任何其他 NIC/端口?
本质上,我想让 OpenSM 认为每个 NIC 都在它自己的服务器上,即假装不可能存在 QPI 流量。
看:https://docs.mellanox.com/display/MLNXOFEDv461000/OpenSM
一旦 MinHop 矩阵存在,就会访问每个交换机,并且对于每个目标 LID,会决定应该使用哪个端口来到达该 LID。
答案1
https://community.mellanox.com/s/question/0D51T00006RVtlU/rdmacm-connection-setup-issues
据记录显示,通过确保 ibacm 服务(Infiniband 助理通信管理器)在所有服务器上运行,该问题已基本得到解决。
在所有服务器上运行sudo ibacm
解决了这个问题,不要问我为什么......