Skip to main content

GPU Direct技术概述

什么是GPU Direct?

GPU DirectNVIDIA开发的一系列高性能通信技术,旨在实现GPU与其他设备(网络接口卡NIC、存储设备、其他GPU)之间的直接数据传输,绕过CPU和主机内存,从而消除传统数据传输路径中的性能瓶颈。

传统数据传输的瓶颈

在传统架构中,GPU与外部设备之间的数据传输必须经过CPU和主机内存。该架构存在以下问题:

  • CPU成为瓶颈:所有数据都要经过CPU处理,占用CPU资源
  • 多次内存拷贝:数据需要在设备内存、主机内存、GPU显存之间多次拷贝
  • 延迟增加:每次拷贝和CPU介入都增加延迟
  • 带宽受限:受制于PCIeCPU内存带宽限制

GPU Direct的核心价值

GPU Direct通过 直接内存访问(DMA 技术,让设备绕过CPU直接与GPU显存通信。主要优势:

  • 消除CPU瓶颈CPU不再参与数据搬运,释放CPU资源
  • 减少内存拷贝:数据直接在源和目标之间传输,避免中间拷贝
  • 降低延迟:减少数据传输路径,大幅降低端到端延迟
  • 提升带宽:充分利用设备间的直连带宽,突破CPU内存限制

GPU Direct技术家族

GPU Direct包含多项子技术,分别针对不同场景:

技术场景核心功能
GPU Direct StorageGPU ↔ 存储GPU直接访问NVMe/SSD,绕过CPU加载数据
GPU Direct P2PGPU ↔ GPU(同节点)同服务器内GPU间点对点通信,共享PCIe通道
GPU Direct RDMAGPU ↔ 网络GPU直接与网卡通信,实现远程直接内存访问
GPU Direct VideoGPU ↔ 视频设备GPU直接处理视频流(本文不涉及)

GPU Direct Storage(存储直连)

技术背景

随着AIHPC数据集规模爆炸式增长(TB到PB级),I/O性能逐渐成为系统瓶颈:

  • 计算速度提升GPU计算能力从TFLOPSPFLOPS级别
  • I/O速度停滞:传统CPU控制的I/O流程成为瓶颈
  • 数据加载时间:加载训练数据的时间开始主导整体训练时长

传统I/O流程的问题:

  • 数据需要先拷贝到CPU的内核缓冲区(Bounce Buffer
  • 再从CPU内存拷贝到GPU显存
  • 两次拷贝 + CPU开销 = 严重的性能损失

GPU Direct Storage原理

GPU Direct Storage

核心思想:让存储设备的DMA引擎直接访问GPU显存,完全绕过CPU和主机内存。

技术实现:

  1. 存储控制器支持GPU Direct(如NVMe驱动增强)
  2. DMA引擎直接将数据从存储介质写入GPU显存
  3. 驱动协同:存储驱动、GPU驱动、文件系统协同工作
  4. 零拷贝:数据在物理层面直接从存储到GPU,不经过任何中间缓冲

性能提升

NVIDIA DGX-2系统为例:

方式带宽说明
传统方式~50 GB/s受限于CPU内存到GPUPCIe带宽
GPU Direct Storage~200 GB/s多路NVMe + 多路网络并行直达GPU

提升4倍带宽! 存储位置无关(本地NVMeNASNVMe-oF远程存储均可)

主要特点和优势

1. 减少CPU参与

  • CPU不再参与数据搬运,释放CPU资源用于其他任务
  • 提升系统整体效率和响应能力

2. 低延迟数据访问

  • 消除经过CPU的传输路径,最小化端到端延迟
  • 对实时分析、在线推理、HPC模拟等延迟敏感场景至关重要

3. 提高存储性能

  • 高速数据传输,充分发挥NVMe/NVMe-oF存储性能
  • 加速数据密集型工作负载(如大规模模型训练、数据预处理)

4. 增强可扩展性

  • 支持多GPU并发访问存储
  • 适合大规模分布式训练、多任务并行场景

5. 广泛兼容性

  • 存储协议NVMeNVMe over Fabrics (NVMe-oF)NAS
  • 软件生态:集成到CUDAcuFile API、主流深度学习框架
  • 硬件支持:主流存储厂商(DellNetAppPure Storage等)提供支持

应用场景

  • 大规模模型训练:加速TB级数据集的加载(如GPTLLM训练)
  • 实时推理:快速加载模型参数和输入数据
  • 科学计算HPC应用中的海量数据I/O(气候模拟、基因测序)
  • 数据分析:大数据处理中的高速数据读取

GPU Direct P2P(点对点通信)

技术背景

在多GPU系统中,GPU之间频繁需要交换数据:

  • 模型并行:不同GPU负责模型的不同部分
  • 数据并行:梯度同步、参数更新需要GPU间通信
  • 流水线并行:不同阶段间传递中间结果

传统方式的低效

没有GPU Direct P2P时的数据传输:

没有GPU Direct P2P时的数据传输

  • 数据从源GPU通过PCIe拷贝到CPU主机内存(第1次拷贝)
  • 再从CPU内存通过PCIe拷贝到目标GPU(第2次拷贝)
  • 两次拷贝 + CPU介入 = 延迟高、带宽浪费

GPU Direct P2P原理

核心机制:如果两个GPU连接到同一PCIe总线(或同一PCIe交换机),允许它们直接访问彼此的显存,无需CPU参与。

GPU Direct P2P时的数据传输

技术要点:

  1. PCIe P2P协议GPU间通过PCIe的点对点传输能力直接通信
  2. 显存映射:目标GPU的显存地址映射到源GPU的地址空间
  3. DMA引擎GPU自带的DMA引擎负责数据搬运
  4. 零CPU开销CPU仅负责初始化,数据传输无需CPU介入

性能提升

方式拷贝次数CPU参与延迟
传统方式2
GPU Direct P2P1低(减半)
  • 延迟降低50%
  • 带宽提升:充分利用PCIe带宽(PCIe 4.064 GB/s双向)
  • CPU释放CPU不再参与数据搬运

应用场景

  • 数据并行训练:多GPU梯度同步(AllReduce操作)
  • 模型并行:不同GPU间传递激活值和梯度
  • 流水线并行:相邻阶段GPU间传递中间结果
  • 多任务推理:多GPU协同处理不同任务

局限性

  • 拓扑限制:仅适用于连接到同一PCIe总线/交换机GPU
  • 带宽共享:多GPU共享PCIe带宽,可能产生竞争
  • 可扩展性PCIe拓扑限制了全互联规模

解决方案NVLink

GPUDirect RDMA(远程直接内存访问)

技术背景

GPU Direct P2PNVLink主要解决同一节点内的GPU通信。当训练任务扩展到多个节点时,梯度、参数和激活值需要通过InfiniBandRoCE网络在节点之间传输,此时数据通常还要经过主机内存中转。

普通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显存

典型的数据传输过程如下:

  1. 应用程序或通信库分配GPU显存缓冲区
  2. GPU驱动将显存页面固定并映射给支持GDRRDMA网卡
  3. 通信库注册该显存缓冲区,建立Queue Pair并交换访问所需的地址和密钥
  4. 网卡的DMA引擎直接从源端显存读取数据,通过网络发送,并直接写入目标端显存
  5. 通信库根据完成事件以及GPU与网卡之间的内存一致性要求,同步后续计算

GDR绕过的是数据传输过程中的主机内存和内核数据路径,并不意味着CPU完全退出通信。缓冲区分配、内存注册、连接建立和通信任务提交等控制面操作通常仍由CPU和通信库负责。由GPU直接发起网络操作属于更进一步的GPU-initiated networking能力,不能与GPUDirect RDMA混为一谈。

与普通RDMA的区别

GPUDirect RDMA不是一种新的网络协议,而是对普通RDMA数据路径的扩展。两者都可以使用InfiniBandRoCE,也都具有Kernel BypassCPU Offload和低延迟等特性;核心区别在于网卡直接访问的内存类型

对比项普通RDMAGPUDirect 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缓冲区的NCCLCUDA-aware MPIUCX或相应的RDMA Verbs应用
  • 网络环境:底层仍需正确配置InfiniBandRoCE网络;使用RoCE时还要处理拥塞控制、流量控制和网络隔离

拓扑和部署限制

  • 拓扑影响显著:跨CPU Socket或跨PCIe Root Complex可能降低带宽,部分平台甚至无法完成PCIe P2P访问
  • IOMMU与ACS限制IOMMU映射、ACS重定向和虚拟化配置可能阻断或改变设备间的P2P路径
  • 容器权限要求:容器环境需要正确注入GPURDMA设备,并配置驱动、内存锁定及相关设备权限
  • 回退不易察觉:通信库可能在GDR不可用时自动回退到主机内存中转,因此仅验证RDMA连通性并不足够

部署时可以使用nvidia-smi topo -m检查GPU与网卡的拓扑关系,通过ibv_devinfo确认RDMA设备状态,并结合NCCL TestsNCCL_DEBUG=INFO验证实际是否启用了GDR数据路径。

应用场景

  • 多节点数据并行训练:加速跨节点梯度同步和AllReduce操作
  • 大模型并行训练:降低张量并行、流水线并行跨节点传输的开销
  • 分布式推理:减少跨节点传递激活值和缓存数据的延迟
  • GPU加速HPC:让计算结果直接从显存进入高速网络,避免主机内存暂存

GPUDirect RDMANVLink/NVSwitch是互补关系:NVLink/NVSwitch负责节点内的高速GPU互联,GPUDirect RDMA负责通过网卡和网络进行节点间通信。大规模训练集群通常同时使用这两类技术。

NVLink(高速GPU互联)

GPU Direct P2P虽然绕过了CPU,但仍受限于 PCIe带宽和拓扑

  • PCIe 4.0:单向64 GB/s(双向128 GB/s
  • 拓扑限制:难以实现单机多GPU全互联(例如常见的单机8卡)
  • 带宽瓶颈AI训练数据量增长远超PCIe带宽提升速度

NVLink技术

NVLinkNVIDIA自研的高速、点对点GPU互联技术,专为GPU间大规模数据传输优化。

首次亮相(2018)

  • 应用于美国能源部的两台超级计算机:
    • Summit(橡树岭国家实验室)
    • Sierra(劳伦斯利弗莫尔国家实验室)
  • 连接GPU-GPUGPU-CPU,成为HPC领域焦点

核心特性

1. 超高带宽

  • 第4代NVLink(Hopper架构)
    • GPU配备18NVLink通道
    • 每条通道双向50 GB/s
    • 总带宽:900 GB/s18条 × 50 GB/s
  • 对比PCIe 5.0128 GB/s双向
  • 带宽优势:7倍于PCIe!

2. 超低延迟

  • 点对点直连:无需经过交换机或CPU
  • 专用协议:针对GPU间通信优化,延迟更低
  • 硬件加速NVLink控制器集成在GPU芯片内
  • GPU间可直接访问彼此的显存
  • 构建统一内存空间,多GPU如同一块大显存
  • 支持**Cache一致性协议**,简化编程模型

4. 灵活扩展

  • 支持2/4/6/8/12/18条通道配置
  • 根据需求灵活分配带宽
  • 支持GPU-GPUGPU-CPUGPU-Switch多种连接

架构演进

代数架构单通道带宽单GPU通道数总带宽代表产品
NVLink 1.0Pascal20 GB/s4160 GB/sTesla P100
NVLink 2.0Volta25 GB/s6300 GB/sTesla V100
NVLink 3.0Ampere25 GB/s12600 GB/sA100
NVLink 4.0Hopper25 GB/s18900 GB/sH100

应用场景

  • 大规模AI训练:多GPU高速梯度同步
  • 超大模型:模型分片跨GPU,需要高速通信
  • HPC模拟:科学计算中的GPU间数据交换
  • 实时推理:多GPU协同推理,低延迟要求

NVLink的局限

  • 仍未全互联:单服务器8GPU,无法通过NVLink实现两两直连(拓扑限制)
  • 需要专门设计:主板和系统架构需要特殊支持

解决方案NVSwitch

NVSwitch(全互联交换架构)

技术背景

即使有了NVLink,单服务器中多GPU仍难以实现全互联

  • 8个GPU两两直连需要28条链路(组合数学:C(8,2)=28)
  • 单GPU最多18条NVLink,无法满足全互联需求
  • 拓扑复杂:需要特殊布线和路由设计

NVSwitch解决方案

NVSwitchNVIDIA在2018年推出的**GPU专用高速交换芯片**,实现了单节点内所有GPU全互联、无阻塞通信

核心特性

1. 全互联架构

  • **单NVSwitch**支持最多18GPU端口
  • NVIDIA DGX系统
    • DGX A1006NVSwitch,连接8A100 GPU
    • DGX H1004NVSwitch,连接8H100 GPU
  • 任意两个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. 无阻塞通信

  • 所有8GPU可同时通信,无带宽竞争
  • 非阻塞交换:任意源-目标对都可全速传输
  • 高效集合通信AllReduceBroadcast等操作极速完成

4. 低延迟

  • 硬件交换:数据直接在NVSwitch芯片内转发,无需软件处理
  • 端到端延迟:约1-2微秒(GPU间)

架构拓扑

NVSwitch

  • 每个GPU连接到所有NVSwitch
  • 每个NVSwitch连接到所有GPU
  • 构成完全二分图拓扑,实现全互联

性能提升

架构全互联总带宽延迟可扩展性
PCIe P2P~128 GB/s
NVLink~900 GB/s
NVLink + NVSwitch900 GB/s极低

应用场景

  • 超大规模AI训练GPT-4LLM等超大模型训练
  • 高性能深度学习:需要频繁GPU间同步的复杂模型
  • 科学计算:大规模HPC应用、分子动力学模拟
  • 推荐系统:海量特征交互的推荐模型训练

总结

NVIDIA GPU Direct技术体系是现代AI基础设施的关键使能技术

技术连接对象带宽延迟适用场景
GPU Direct StorageGPU ↔ 存储200+ GB/s数据加载、I/O密集
GPU Direct P2PGPU ↔ GPU(PCIe)128 GB/s小规模多GPU
GPUDirect RDMAGPU ↔ 网卡 ↔ 远端GPU取决于InfiniBand/RoCE链路多节点GPU通信
NVLinkGPU ↔ GPU(直连)900 GB/s极低大规模多GPU
NVSwitchGPU ↔ GPU(全互联)900 GB/s极低超大规模AI训练

核心价值

  1. 绕过CPU瓶颈:所有技术都通过DMA绕过CPU,释放CPU资源
  2. 减少数据拷贝:直接路径传输,消除中间缓冲区
  3. 降低延迟:缩短数据传输路径,提升实时性
  4. 提升带宽:充分利用设备间高速互联能力

典型通信路径

存储到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工作负载的必备知识。