NVIDIA/gds-nvidia-fs

NVIDIA GPUDirect Storage Driver

NVIDIA gds-nvidia-fs

是什么 – 一个 Linux 内核模块(nvidia-fs.ko),实现了 NVIDIA 的 GPUDirect Storage(GDS)驱动。它允许受支持的存储系统通过 DMA/RDMA 直接将数据移入或移出 GPU 内存,绕过 CPU 和主机内存。

为何重要 – 现代 AI/ML 工作负载通常需要以高速向 GPU 传输数 TB 的数据。传统路径会通过 CPU 复制数据,造成带宽瓶颈。此驱动实现了零拷贝路径,可显著提升训练、推理和数据密集型分析的吞吐量并降低延迟。


核心功能

功能 详情
直接 GPU I/O 在 NVMe/NVMe-OF、ScaleFlux 计算存储或 RDMA 支持的文件系统与 GPU 内存之间直接移动数据,无需在主机 RAM 中暂存。
支持的存储后端 • NVMe/NVMe-OF/ScaleFlux CSD 上的 XFS 与 EXT4(有序模式)
• 通过 RDMA 的 NFS(MOFED ≥ 5.1)
• 分布式 RDMA 文件系统:DDN Exascaler、WekaFS、VAST
硬件要求 NVIDIA Tesla 或 Quadro GPU(Pascal 架构或更新),兼容的 NVMe 或分布式存储,Linux 内核 ≥ 4.15,MOFED ≥ 5.1,CUDA ≥ 10.0,驱动 ≥ 418.40
内核集成 作为可加载内核模块(nvidia-fs.ko)构建。
文档 官方 GDS 文档: https://docs.nvidia.com/gpudirect-storage/index.html

典型使用场景工作流

  1. 准备环境 – 安装受支持的 NVIDIA GPU、适当的存储(如 NVMe SSD 或 RDMA 支持的文件系统),以及所需的软件栈(Linux 内核、MOFED、CUDA 工具包、NVIDIA 驱动)。
  2. 构建驱动
    cd src
    export CONFIG_MOFED_VERSION=$(ofed_info -s | cut -d '-' -f 2)
    sudo make
    
  3. 加载模块
    sudo insmod nvidia-fs.ko
    
  4. **在您的 CUDA 应用程序中(或 RAPIDS、PyTorch-Dataloader、TensorFlow 等库中)使用 cufile API 打开受支持存储上的文件,并直接读写到 GPU 缓冲区。
  5. 优势 – 更高的有效 I/O 带宽和更低的 CPU 开销,从而提升大规模模型训练或推理的数据管道吞吐量。

快速入门

# 克隆仓库(示例 URL)
git clone https://github.com/NVIDIA/gds-nvidia-fs.git
cd gds-nvidia-fs/src

# 导出主机上检测到的 MOFED 版本
export CONFIG_MOFED_VERSION=$(ofed_info -s | cut -d '-' -f 2)

# 构建并安装内核模块
sudo make
sudo insmod nvidia-fs.ko

加载后,驱动将注册到内核,可供调用 NVIDIA GPUDirect Storage(cufile)库的应用程序使用。


适用人群

  • 构建大规模模型训练高性能数据管道的 AI/ML 工程师。
  • 希望通过减少 CPU 侧 I/O 瓶颈来最大化 GPU 利用率的数据中心运维人员。
  • 从事存储感知 GPU 计算、计算存储或基于 RDMA 系统的研究人员。

限制与注意事项

  • 该驱动仅在 Linux 内核 4.15+ 上运行,且需要 MOFED(Mellanox OFED)堆栈以支持 RDMA。
  • XFS/EXT4 文件系统必须以 有序模式 挂载;其他挂载选项不受支持。
  • 它是低层内核组件;用户通常通过高层级库(如 NVIDIA 的 cufile API)而非直接调用它。

简而言之 – nvidia-fs 是使 NVIDIA GPUDirect Storage 正常工作的内核级组件,可实现从现代存储系统到 GPU 内存的超高速、零拷贝数据移动,是下一代 AI 工作负载的关键构建模块。

相关

  • 项目
  • 项目
  • 项目
  • 项目