启用 InfiniBand

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集

支持 RDMAHB 系列N 系列 VM 通过低延迟的高带宽 InfiniBand 网络进行通信。 此类互连上的 RDMA 功能对于提高分布式节点 HPC 和 AI 工作负载的可伸缩性和性能至关重要。 支持 InfiniBand 的 HB 系列和 N 系列 VM 采用非阻塞性胖树进行连接,使用的小直径旨在实现一致的优化 RDMA 性能。

可以通过多种方法在各种 VM 大小上启用 InfiniBand。

具有 InfiniBand 驱动程序的 VM 映像

请参阅 VM 映像,了解市场中支持的一系列 VM 映像。InfiniBand 驱动程序(适用于 SR-IOV 或非 SR-IOV VM)中预加载了这些映像,也可以使用适用于支持 RDMA 的 VM 的适当驱动程序配置这些映像。 市场中的 Ubuntu-HPC VM 映像是最简单的入门方法。

InfiniBand 驱动程序 VM 扩展

在 Linux 上,可以使用 InfiniBandDriverLinux VM 扩展安装 Mellanox OFED 驱动程序,并在已启用 SR-IOV 的 HB 系列和 N 系列 VM 上启用 InfiniBand。

在 Windows 上,InfiniBandDriverWindows VM 扩展可安装 Windows Network Direct 驱动程序(在非 SR-IOV VM 上)或 Mellanox OFED 驱动程序(在 SR-IOV VM 上),以建立 RDMA 连接。 在 A8 和 A9 实例的某些部署中,会自动添加 HpcVmDrivers 扩展。 请注意,HpcVmDrivers VM 扩展即将弃用;它不再会更新。

若要将 VM 扩展添加到 VM,可以使用 Azure PowerShell cmdlet。 有关详细信息,请参阅虚拟机扩展和功能。 还可使用经典部署模型中部署的 VM 扩展。

手动安装

可以在启用了 SR-IOVHB 系列N 系列 VM 上手动安装 Mellanox OpenFabrics 驱动程序 (OFED)

Linux

可以按照以下示例安装适用于 Linux 的 OFED 驱动程序。 尽管此处的示例适用于 RHEL,但步骤是通用的,可用于任何兼容的 Linux 操作系统,如 Ubuntu(18.04、19.04、20.04)和 SLES(12 SP4+ 和 15)。 有关其他发行版的更多示例,请参阅 azhpc-images 存储库。 也可以使用收件箱驱动程序,但 Mellanox OFED 驱动程序提供了更多功能。

MLNX_OFED_DOWNLOAD_URL=http://content.mellanox.com/ofed/MLNX_OFED-5.0-2.1.8.0/MLNX_OFED_LINUX-5.0-2.1.8.0-rhel7.7-x86_64.tgz
# Optionally verify checksum
wget --retry-connrefused --tries=3 --waitretry=5 $MLNX_OFED_DOWNLOAD_URL
tar zxvf MLNX_OFED_LINUX-5.0-2.1.8.0-rhel7.7-x86_64.tgz

KERNEL=( $(rpm -q kernel | sed 's/kernel\-//g') )
KERNEL=${KERNEL[-1]}
# Uncomment the lines below if you are running this on a VM
#RELEASE=( $(cat /etc/redhat-release | awk '{print $4}') )
#yum -y install http://olcentgbl.trafficmanager.cn/redhat/${RELEASE}/updates/x86_64/kernel-devel-${KERNEL}.rpm
sudo yum install -y kernel-devel-${KERNEL}
sudo ./MLNX_OFED_LINUX-5.0-2.1.8.0-rhel7.7-x86_64/mlnxofedinstall --kernel $KERNEL --kernel-sources /usr/src/kernels/${KERNEL} --add-kernel-support --skip-repo

Windows

对于 Windows,请下载并安装适用于 Windows 驱动程序的 Mellanox OFED

启用基于 InfiniBand (IB) 的 IP

如果计划运行 MPI 作业,则通常不需要 IPoIB。 MPI 库将使用谓词接口进行 IB 通信(除非你明确使用 MPI 库的 TCP/IP 通道)。 但如果你的应用使用 TCP/IP 进行通信,并且你想要通过 IB 运行,则你可以通过 IB 接口使用 IPoIB。 使用以下命令(适用于 RHEL)启用基于 InfiniBand 的 IP。

重要

要避免问题,请确保未运行较旧版本的 Microsoft Azure Linux 代理 (waagent)。 建议在通过 IB 启用 IP 之前至少使用版本 2.4.0.2

sudo sed -i -e 's/# OS.EnableRDMA=n/OS.EnableRDMA=y/g' /etc/waagent.conf
sudo systemctl restart waagent

后续步骤