无需开关即可将两张 infiniband 卡相互连接

Iva*_*van 8 networking infiniband

是否可以将两台独立计算机上的两张 Mellanox ConnectX-2 卡相互连接,而无需在两者之间进行切换?我只是想学习使用动词编程,而不必在昂贵的开关上花费 $。

我需要一根特殊的电缆还是标准的一个工作正常?在标准以太网上,我需要一根交叉连接电缆。

hoo*_*enz 7

是的,您可以直接连接它们。但是您必须确保至少在其中一台机器上运行 opensm 子网管理器。

在软件方面,如果您使用的是 Ubuntu 14.04,请安装以下软件包:

sudo apt-get install opensm infiniband-diags librdmacm-dev libibverbs-dev libmlx4-dev
Run Code Online (Sandbox Code Playgroud)

然后将这些添加到 /etc/modules

mlx4_ib
ip_ipoib
rdma_ucm
Run Code Online (Sandbox Code Playgroud)

为卡添加 IP 地址。编辑 /etc/network/interfaces

auto ib0
iface ib0 inet static
  address 10.0.0.1
  netmask 255.255.255.0
Run Code Online (Sandbox Code Playgroud)

重启。

Opensm 将自动启动。对另一台机器重复上述操作,但使用不同的 IP:10.0.0.2。

一切顺利,您应该能够从 10.0.0.1 ping 10.0.0.2,反之亦然。

运行一些测试:

sudo ibnodes
Run Code Online (Sandbox Code Playgroud)

哦,ibnodes 和其他几个脚本中存在一个错误。您可以通过编辑来修复它们。大多数情况下,它们是在实际调用 /usr/sbin 中的应用程序时指向 /usr/local/sbin 的 shell 脚本。

如果找到,请继续编辑它并相应地更改 IBPATH。我从来没有为此提交过针对 Ubuntu 的错误报告。希望其他人会这样做。多年来一直是个问题。

输出将类似于:

Ca  : 0x001a4bffff0c9374 ports 2 "HP Lion Cub DDR 128MB"
Ca  : 0x001a4bffff0c446c ports 2 "HP Lion Cub DDR 128MB"
Ca  : 0x001a4bffff0c4438 ports 2 "HP Lion Cub DDR 128MB"
Switch  : 0x000b8cffff006aa8 ports 24 "MT47396 Infiniscale-III Mellanox Technologies" base port 0 lid 2 lmc 0
Run Code Online (Sandbox Code Playgroud)