GDS、GIDS 与 uGDS 有什么区别:从数据直达、GPU 发起到用户态 NVMe

GDS、GIDS 和 uGDS 的名字非常接近,也都在讨论 GPU 与存储之间的数据通路,因此很容易被理解成同一项技术的三个版本。 实际上,它们解决的是三个不同层面的问题: GDS 关注数据路径:怎样让存储数据不经 CPU 内存中转,直接进入 GPU 显存; GIDS 关注控制路径:怎样让 GPU Kernel 自己决定并发起存储请求,减少 GPU 与 CPU 往返; uGDS 关注软件栈:怎样让 CPU 在用户态直接管理 NVMe 队列,绕过内核 NVMe 驱动与文件系统。 可以先用一句话概括: GDS 是“数据直达 GPU”,GIDS 是“GPU 主动要数据”,uGDS 是“用户态 CPU 直接驱动 NVMe 把数据送到 GPU”。 本文从请求由谁发起、数据经过哪里、NVMe 命令由谁构造、是否保留文件系统语义等维度,分析三者的区别与联系。更深入的原理可以继续阅读本系列的三篇文章: NVIDIA GPUDirect Storage(GDS)详解:让存储数据绕过 CPU 直达 GPU NVIDIA GPU-Initiated Data Storage(GIDS)详解:让 GPU Kernel 主动访问存储 uGDS 原理解析:在用户态打通 NVMe SSD 与 GPU 显存 一、先区分数据路径与控制路径 理解这三项技术的关键,是不要把“数据经过哪里”和“谁发起 I/O”混为一谈。 数据路径 数据路径描述有效载荷如何移动。例如: 传统路径:SSD → CPU 内存 → GPU 显存 直接路径:SSD ──────────→ GPU 显存 GDS、GIDS 和 uGDS 都希望建立 SSD 与 GPU 显存之间的 DMA 路径,减少 CPU bounce buffer。但“数据不经过 CPU 内存”并不代表“CPU 没有参与”。 ...

2026年8月20日 · 5 分钟 · Hellokitty