linux下开启GPU Direct RDMA(GDR)的方法

GPU Direct RDMA 是一种由 NVIDIA 开发的技术,旨在实现 GPU 与第三方设备(如网络接口、视频采集设备、存储适配器)之间的直接数据交换,而无需经过 CPU 的参与。这项技术利用 PCI Express 的标准功能,显著提高了数据传输的带宽和降低了延迟。

今天我们就来记录整理下开启GDR的方法。

1.开启 GDR 前提条件

GPU架构要求:需要Kepler架构及以上,如K80、P100、V100、A100等
系统要求:PCIe 拓扑需支持 GPU 与网卡间的直接通信(建议通过同一条 PCIe 总线或 NUMA 节点)。
网络接口要求:支持 RDMA 和 PeerDirect 技术的设备,如Mellanox网卡或者兼容的 InfiniBand/RoCE 网卡。
GPU和网卡驱动要求:GPU驱动≥ 418.43,Mellanox OFED ≥ 5.0,cuda ≥ 9.0,建议≥ 11.0
系统内核版本要求:内核 ≥ 4.13

上面的具体要求已经整理出来,下面我就来看看具体安装过程。

2.安装 Mellanox OFED 驱动程序

wget https://www.mellanox.com/downloads/ofed/MLNX_OFED-5.8-3.0.7.0/MLNX_OFED_LINUX-5.8-3.0.7.0-ubuntu20.04-x86_64.tgz
tar -xvf MLNX_OFED_LINUX-*.tgz
cd MLNX_OFED_LINUX-*
sudo ./mlnxofedinstall --auto-add-kernel-support --with-gdrcopy --force
sudo /etc/init.d/openibd restart

安装时注意需要添加--with-gdrcopy参数

3.安装 gdrcopy 内存复制库

sudo apt install -y build-essential devscripts check libsubunit-dev
git clone https://github.com/NVIDIA/gdrcopy.git
cd gdrcopy
make
sudo make install

4.加载相关的内核模块

sudo modprobe nvidia_uvm
sudo modprobe nvidia-peermem

5.验证 GPU Direct RDMA 支持

检查 GPU 与网卡是否在同一 IOMMU Group

lspci -tv | grep -E "NVIDIA|Mellanox"

确认 nv_peer_mem 模块加载

lsmod | grep nv_peer_mem

测试 RDMA 访问 GPU 内存

cd gdrcopy/tests
sudo ./gdrcopy_test  # 输出 "Test PASSED" 表示成功

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/1094

评论列表

0%