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 |
典型使用场景工作流
- 准备环境 – 安装受支持的 NVIDIA GPU、适当的存储(如 NVMe SSD 或 RDMA 支持的文件系统),以及所需的软件栈(Linux 内核、MOFED、CUDA 工具包、NVIDIA 驱动)。
- 构建驱动
cd src export CONFIG_MOFED_VERSION=$(ofed_info -s | cut -d '-' -f 2) sudo make - 加载模块
sudo insmod nvidia-fs.ko - **在您的 CUDA 应用程序中(或 RAPIDS、PyTorch-Dataloader、TensorFlow 等库中)使用
cufileAPI 打开受支持存储上的文件,并直接读写到 GPU 缓冲区。 - 优势 – 更高的有效 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 的
cufileAPI)而非直接调用它。
简而言之 – nvidia-fs 是使 NVIDIA GPUDirect Storage 正常工作的内核级组件,可实现从现代存储系统到 GPU 内存的超高速、零拷贝数据移动,是下一代 AI 工作负载的关键构建模块。
相关
- 项目
- 项目
- 项目
- 项目