GPU Direct技术概述
什么是GPU Direct?
GPU Direct是NVIDIA开发的一系列高性能通信技术,旨在实现GPU与其他设备(网络接口卡NIC、存储设备、其他GPU)之间的直接数据传输,绕过CPU和主机内存,从而消除传统数据传输路径中的性能瓶颈。
传统数据传输的瓶颈
在传统架构中,GPU与外部设备之间的数据传输必须经过CPU和主机内存。该架构存在以下问题:
- CPU成为瓶颈:所有数据都要经过
CPU处理,占用CPU资源 - 多次内存拷贝:数据需要在设备内存、主机内存、
GPU显存之间多次拷贝 - 延迟增加:每次拷贝和
CPU介入都增加延迟 - 带宽受限:受制于
PCIe和CPU内存带宽限制
GPU Direct的核心价值
GPU Direct通过 直接内存访问(DMA) 技术,让设备绕过CPU直接与GPU显存通信。主要优势:
- ✅ 消除CPU瓶颈:
CPU不再参与数据搬运,释放CPU资源 - ✅ 减少内存拷贝:数据直接在源和目标之间传输,避免中间拷贝
- ✅ 降低延迟:减少数据传输路径,大幅降低端到端延迟
- ✅ 提升带宽:充分利用设备间的直连带宽,突破
CPU和内存限制
GPU Direct技术家族
GPU Direct包含多项子技术,分别针对不同场景:
| 技术 | 场景 | 核心功能 |
|---|---|---|
GPU Direct Storage | GPU ↔ 存储 | GPU直接访问NVMe/SSD,绕过CPU加载数据 |
GPU Direct P2P | GPU ↔ GPU(同节点) | 同服务器内GPU间点对点通信,共享PCIe通道 |
GPU Direct RDMA | GPU ↔ 网络 | GPU直接与网卡通信,实现远程直接内存访问 |
GPU Direct Video | GPU ↔ 视频设备 | GPU直接处理视频流(本文不涉及) |
GPU Direct Storage(存储直连)
技术背景
随着AI和HPC数据集规模爆炸式增长(TB到PB级),I/O性能逐渐成为系统瓶颈:
- 计算速度提升:
GPU计算能力从TFLOPS到PFLOPS级别 - I/O速度停滞:传统
CPU控制的I/O流程成为瓶颈 - 数据加载时间:加载训练数据的时间开始主导整体训练时长
传统I/O流程的问题:
- 数据需要先拷贝到
CPU的内核缓冲区(Bounce Buffer) - 再从
CPU内存拷贝到GPU显存 - 两次拷贝 +
CPU开销 = 严重的性能损失
GPU Direct Storage原理

核心思想:让存储设备的DMA引擎直接访问GPU显存,完全绕过CPU和主机内存。
技术实现:
- 存储控制器支持
GPU Direct(如NVMe驱动增强) - DMA引擎直接将数据从存储介质写入
GPU显存 - 驱动协同:存储驱动、
GPU驱动、文件系统协同工作 - 零拷贝:数据在物理层面直接从存储到
GPU,不经过任何中间缓冲
性能提升
以NVIDIA DGX-2系统为例:
| 方式 | 带宽 | 说明 |
|---|---|---|
| 传统方式 | ~50 GB/s | 受限于CPU内存到GPU的PCIe带宽 |
| GPU Direct Storage | ~200 GB/s | 多路NVMe + 多路网络并行直达GPU |
提升4倍带宽! 存储位置无关(本地NVMe、NAS、NVMe-oF远程存储均可)
主要特点和优势
1. 减少CPU参与
CPU不再参与数据搬运,释放CPU资源用于其他任务- 提升系统整体效率和响应能力
2. 低延迟数据访问
- 消除经过
CPU的传输路径,最小化端到端延迟 - 对实时分析、在线推理、
HPC模拟等延迟敏感场景至关重要
3. 提高存储性能
- 高速数据传输,充分发挥
NVMe/NVMe-oF存储性能 - 加速数据密集型工作负载(如大规模模型训练、数据预处理)
4. 增强可扩展性
- 支持多
GPU并发访问存储 - 适合大规模分布式训练、多任务并行场景
5. 广泛兼容性
- 存储协议:
NVMe、NVMe over Fabrics (NVMe-oF)、NAS - 软件生态:集成到
CUDA、cuFile API、主流深度学习框架 - 硬件支持:主流存储厂商(
Dell、NetApp、Pure Storage等)提供支持
应用场景
- 大规模模型训练:加速
TB级数据集的加载(如GPT、LLM训练) - 实时推理:快速加载模型参数和输入数据
- 科学计算:
HPC应用中的海量数据I/O(气候模拟、基因测序) - 数据分析:大数据处理中的高速数据读取
GPU Direct P2P(点对点通信)
技术背景
在多GPU系统中,GPU之间频繁需要交换数据:
- 模型并行:不同
GPU负责模型的不同部分 - 数据并行:梯度同步、参数更新需要
GPU间通信 - 流水线并行:不同阶段间传递中间结果
传统方式的低效
没有GPU Direct P2P时的数据传输:

- 数据从源
GPU通过PCIe拷贝到CPU主机内存(第1次拷贝) - 再从
CPU内存通过PCIe拷贝到目标GPU(第2次拷贝) - 两次拷贝 +
CPU介入 = 延迟高、带宽浪费
GPU Direct P2P原理
核心机制:如果两个GPU连接到同一PCIe总线(或同一PCIe交换机),允许它们直接访问彼此的显存,无需CPU参与。

技术要点:
- PCIe P2P协议:
GPU间通过PCIe的点对点传输能力直接通信 - 显存映射:目标
GPU的显存地址映射到源GPU的地址空间 - DMA引擎:
GPU自带的DMA引擎负责数据搬运 - 零CPU开销:
CPU仅负责初始化,数据传输无需CPU介入
性能提升
| 方式 | 拷贝次数 | CPU参与 | 延迟 |
|---|---|---|---|
| 传统方式 | 2次 | 是 | 高 |
| GPU Direct P2P | 1次 | 否 | 低(减半) |
- 延迟降低50%
- 带宽提升:充分利用
PCIe带宽(PCIe 4.0约64 GB/s双向) - CPU释放:
CPU不再参与数据搬运
应用场景
- 数据并行训练:多
GPU梯度同步(AllReduce操作) - 模型并行:不同
GPU间传递激活值和梯度 - 流水线并行:相邻阶段
GPU间传递中间结果 - 多任务推理:多
GPU协同处理不同任务
局限性
- 拓扑限制:仅适用于连接到同一PCIe总线/交换机的
GPU - 带宽共享:多
GPU共享PCIe带宽,可能产生竞争 - 可扩展性:
PCIe拓扑限制了全互联规模
解决方案:NVLink
GPUDirect RDMA(远程直接内存访问)
技术背景
GPU Direct P2P和NVLink主要解决同一节点内的GPU通信。当训练任务扩展到多个节点时,梯度、参数和激活值需要通过InfiniBand或RoCE网络在节点之间传输,此时数据通常还要经过主机内存中转。
普通RDMA用于GPU通信时的数据路径:
源GPU显存 → 源主机内存 → 源RDMA网卡 → 网络
→ 目标RDMA网卡 → 目标主机内存 → 目标GPU显存
普通RDMA已经能够绕过操作系统内核,让RDMA网卡直接读写应用程序注册的主机内存;但它的通信端点通常仍是主机内存。对于GPU工作负载,发送端需要先把数据从显存复制到主机内存,接收端再将数据从主机内存复制到显存。这两次额外复制会占用PCIe和主机内存带宽,并增加端到端延迟。
GPUDirect RDMA原理
GPUDirect RDMA(简称GDR)允许RDMA网卡通过PCIe P2P直接读写GPU显存,不再使用主机内存作为网络传输的中转缓冲区。
源GPU显存 → 源RDMA网卡 → InfiniBand/RoCE网络
→ 目标RDMA网卡 → 目标GPU显存
典型的数据传输过程如下:
- 应用程序或通信库分配
GPU显存缓冲区 GPU驱动将显存页面固定并映射给支持GDR的RDMA网卡- 通信库注册该显存缓冲区,建立
Queue Pair并交换访问所需的地址和密钥 - 网卡的
DMA引擎直接从源端显存读取数据,通过网络发送,并直接写入目标端显存 - 通信库根据完成事件以及
GPU与网卡之间的内存一致性要求,同步后续计算
GDR绕过的是数据传输过程中的主机内存和内核数据路径,并不意味着CPU完全退出通信。缓冲区分配、内存注册、连接建立和通信任务提交等控制面操作通常仍由CPU和通信库负责。由GPU直接发起网络操作属于更进一步的GPU-initiated networking能力,不能与GPUDirect RDMA混为一谈。
与普通RDMA的区别
GPUDirect RDMA不是一种新的网络协议,而是对普通RDMA数据路径的扩展。两者都可以使用InfiniBand或RoCE,也都具有Kernel Bypass、CPU Offload和低延迟等特性;核心区别在于网卡直接访问的内存类型。
| 对比项 | 普通RDMA | GPUDirect RDMA |
|---|---|---|
| 网卡直接访问的内存 | 注册的主机用户态内存 | 注册的GPU显存 |
| GPU数据的传输路径 | 显存与主机内存之间需要暂存和复制 | 网卡通过PCIe P2P直接读写显存 |
| 是否绕过操作系统内核 | 是 | 是 |
| 是否绕过主机内存 | 对普通主机应用是零拷贝;对GPU数据通常不是 | 是,不需要主机内存暂存GPU数据 |
| CPU角色 | 负责控制面;GPU场景还需安排显存与主机内存复制 | 通常仍负责控制面,但不参与数据搬运 |
| 硬件要求 | 支持RDMA的网卡和InfiniBand/RoCE网络 | 在普通RDMA基础上,还要求GPU、网卡、驱动和PCIe拓扑支持显存直访 |
| 典型场景 | 主机内存数据库、分布式存储、通用HPC通信 | 多节点GPU训练、GPU计算和GPU间集合通信 |
因此,RDMA可用不代表GPUDirect RDMA可用。如果RDMA网卡只能注册主机内存,通信库仍会回退到主机内存中转路径。
软硬件条件
- GPU与驱动:
NVIDIA GPU和驱动必须支持GPUDirect RDMA的显存映射与共享机制 - RDMA网卡:网卡及其驱动必须支持对
GPU显存执行DMA,常见于NVIDIA ConnectX系列网卡 - Peer Memory机制:系统需要提供
nvidia-peermem或受支持的DMA-BUF机制,使RDMA驱动能够注册和映射GPU显存 - PCIe拓扑:
GPU与网卡应尽量位于同一PCIe Root Complex或相近的PCIe Switch下,避免跨NUMA节点和处理器互联 - 通信软件:需要使用支持
GPU缓冲区的NCCL、CUDA-aware MPI、UCX或相应的RDMA Verbs应用 - 网络环境:底层仍需正确配置
InfiniBand或RoCE网络;使用RoCE时还要处理拥塞控制、流量控制和网络隔离
拓扑和部署限制
- 拓扑影响显著:跨
CPU Socket或跨PCIe Root Complex可能降低带宽,部分平台甚至无法完成PCIe P2P访问 - IOMMU与ACS限制:
IOMMU映射、ACS重定向和虚拟化配置可能阻断或改变设备间的P2P路径 - 容器权限要求:容器环境需要正确注入
GPU和RDMA设备,并配置驱动、内存锁定及相关设备权限 - 回退不易察觉:通信库可能在
GDR不可用时自动回退到主机内存中转,因此仅验证RDMA连通性并不足够
部署时可以使用nvidia-smi topo -m检查GPU与网卡的拓扑关系,通过ibv_devinfo确认RDMA设备状态,并结合NCCL Tests及NCCL_DEBUG=INFO验证实际是否启用了GDR数据路径。
应用场景
- 多节点数据并行训练:加速跨节点梯度同步和
AllReduce操作 - 大模型并行训练:降低张量并行、流水线并行跨节点传输的开销
- 分布式推理:减少跨节点传递激活值和缓存数据的延迟
- GPU加速HPC:让计算结果直接从显存进入高速网络,避免主机内存暂存
GPUDirect RDMA与NVLink/NVSwitch是互补关系:NVLink/NVSwitch负责节点内的高速GPU互联,GPUDirect RDMA负责通过网卡和网络进行节点间通信。大规模训练集群通常同时使用这两类技术。
NVLink(高速GPU互联)
为什么需要NVLink?
GPU Direct P2P虽然绕过了CPU,但仍受限于 PCIe带宽和拓扑:
PCIe 4.0:单向64 GB/s(双向128 GB/s)- 拓扑限制:难以实现单机多
GPU全互联(例如常见的单机8卡) - 带宽瓶颈:
AI训练数据量增长远超PCIe带宽提升速度
NVLink技术
NVLink是NVIDIA自研的高速、点对点GPU互联技术,专为GPU间大规模数据传输优化。
首次亮相(2018):
- 应用于美国能源部的两台超级计算机:
Summit(橡树岭国家实验室)Sierra(劳伦斯利弗莫尔国家实验室)
- 连接
GPU-GPU和GPU-CPU,成为HPC领域焦点
核心特性
1. 超高带宽
- 第4代NVLink(Hopper架构):
- 单
GPU配备18条NVLink通道 - 每条通道双向
50 GB/s - 总带宽:900 GB/s(
18条 × 50 GB/s)
- 单
- 对比PCIe 5.0:
128 GB/s双向 - 带宽优势:7倍于PCIe!
2. 超低延迟
- 点对点直连:无需经过交换机或
CPU - 专用协议:针对
GPU间通信优化,延迟更低 - 硬件加速:
NVLink控制器集成在GPU芯片内
3. 内存共享(NVLink Memory)
GPU间可直接访问彼此的显存- 构建统一内存空间,多
GPU如同一块大显存 - 支持**
Cache一致性协议**,简化编程模型
4. 灵活扩展
- 支持
2/4/6/8/12/18条通道配置 - 根据需求灵活分配带宽
- 支持
GPU-GPU、GPU-CPU、GPU-Switch多种连接
架构演进
| 代数 | 架构 | 单通道带宽 | 单GPU通道数 | 总带宽 | 代表产品 |
|---|---|---|---|---|---|
NVLink 1.0 | Pascal | 20 GB/s | 4 | 160 GB/s | Tesla P100 |
NVLink 2.0 | Volta | 25 GB/s | 6 | 300 GB/s | Tesla V100 |
NVLink 3.0 | Ampere | 25 GB/s | 12 | 600 GB/s | A100 |
NVLink 4.0 | Hopper | 25 GB/s | 18 | 900 GB/s | H100 |
应用场景
- 大规模AI训练:多
GPU高速梯度同步 - 超大模型:模型分片跨
GPU,需要高速通信 - HPC模拟:科学计算中的
GPU间数据交换 - 实时推理:多
GPU协同推理,低延迟要求
NVLink的局限
- 仍未全互联:单服务器
8个GPU,无法通过NVLink实现两两直连(拓扑限制) - 需要专门设计:主板和系统架构需要特殊支持
解决方案:NVSwitch
NVSwitch(全互联交换架构)
技术背景
即使有了NVLink,单服务器中多GPU仍难以实现全互联:
- 8个GPU两两直连需要28条链路(组合数学:C(8,2)=28)
- 单GPU最多18条NVLink,无法满足全互联需求
- 拓扑复杂:需要特殊布线和路由设计
NVSwitch解决方案
NVSwitch是NVIDIA在2018年推出的**GPU专用高速交换芯片**,实现了单节点内所有GPU的全互联、无阻塞通信。
核心特性
1. 全互联架构
- **单
NVSwitch**支持最多18个GPU端口 - NVIDIA DGX系统:
- DGX A100:
6个NVSwitch,连接8个A100GPU - DGX H100:
4个NVSwitch,连接8个H100GPU
- DGX A100:
- 任意两个
GPU间都有直达路径,无需多跳
2. 超高带宽
- NVSwitch 2.0(Ampere):
- 每端口双向
50 GB/s - 总交换带宽:
600 GB/s
- 每端口双向
- NVSwitch 3.0(Hopper):
- 每端口双向
50 GB/s(支持NVLink 4.0) - 总交换带宽:
900 GB/s
- 每端口双向
3. 无阻塞通信
- 所有
8个GPU可同时通信,无带宽竞争 - 非阻塞交换:任意源-目标对都可全速传输
- 高效集合通信:
AllReduce、Broadcast等操作极速完成
4. 低延迟
- 硬件交换:数据直接在
NVSwitch芯片内转发,无需软件处理 - 端到端延迟:约
1-2微秒(GPU间)
架构拓扑

- 每个
GPU连接到所有NVSwitch - 每个
NVSwitch连接到所有GPU - 构成完全二分图拓扑,实现全互联
性能提升
| 架构 | 全互联 | 总带宽 | 延迟 | 可扩展性 |
|---|---|---|---|---|
PCIe P2P | 否 | ~128 GB/s | 高 | 差 |
NVLink | 否 | ~900 GB/s | 低 | 中 |
NVLink + NVSwitch | 是 | 900 GB/s | 极低 | 优 |
应用场景
- 超大规模AI训练:
GPT-4、LLM等超大模型训练 - 高性能深度学习:需要频繁
GPU间同步的复杂模型 - 科学计算:大规模
HPC应用、分子动力学模拟 - 推荐系统:海量特征交互的推荐模型训练
总结
NVIDIA GPU Direct技术体系是现代AI基础设施的关键使能技术:
| 技术 | 连接对象 | 带宽 | 延迟 | 适用场景 |
|---|---|---|---|---|
GPU Direct Storage | GPU ↔ 存储 | 200+ GB/s | 低 | 数据加载、I/O密集 |
GPU Direct P2P | GPU ↔ GPU(PCIe) | 128 GB/s | 中 | 小规模多GPU |
GPUDirect RDMA | GPU ↔ 网卡 ↔ 远端GPU | 取决于InfiniBand/RoCE链路 | 低 | 多节点GPU通信 |
NVLink | GPU ↔ GPU(直连) | 900 GB/s | 极低 | 大规模多GPU |
NVSwitch | GPU ↔ GPU(全互联) | 900 GB/s | 极低 | 超大规模AI训练 |
核心价值
- 绕过CPU瓶颈:所有技术都通过
DMA绕过CPU,释放CPU资源 - 减少数据拷贝:直接路径传输,消除中间缓冲区
- 降低延迟:缩短数据传输路径,提升实时性
- 提升带宽:充分利用设备间高速互联能力
典型通信路径
存储到GPU:GPU Direct Storage → 解决I/O数据加载瓶颈
节点内GPU:GPU Direct P2P → NVLink → NVSwitch
节点间GPU:GPUDirect RDMA → 通过InfiniBand/RoCE直接传输显存数据
应用价值
- 大规模AI训练:显著缩短训练时间(
10x-100x加速) - 实时推理:降低延迟,提升吞吐量
- HPC应用:加速科学计算、数据分析
- 成本优化:更高效利用
GPU算力,降低总体拥有成本(TCO)
理解GPU Direct技术,是构建高性能AI基础设施、优化AI工作负载的必备知识。