2. 异构计算基础

在 DPU/GPU 与 NVLink 集群互联的课程中,第一步不是直接讨论链路带宽,而是先建立“异构计算”的基本认知:CPU、GPU、DPU 是三类设计目标完全不同的处理器,它们不是简单的“快与慢”关系,而是分别面向延迟敏感控制、吞吐型并行计算、数据搬运与基础设施卸载。理解三者的架构差异、计算模型和协同模式,才能理解为什么 NVLink 会成为连接 GPU 与 DPU 的关键纽带。

一、核心原理:三种处理器的设计哲学

CPU 的核心目标是“通用与低延迟”。它拥有复杂的乱序执行、分支预测、大容量缓存和较强的单线程性能,适合处理不规则控制流、操作系统调度、协议栈、数据库事务等任务。CPU 的核数通常较少,但每个核都能独立处理复杂逻辑。

GPU 的核心目标是“吞吐与数据并行”。它由大量简化控制逻辑的流处理器组成,通过成千上万个线程隐藏内存访问延迟。GPU 擅长矩阵乘、卷积、向量计算、图遍历等规则化并行负载。其计算模型通常表现为 SIMT(单指令多线程):同一 warp 内线程执行相同指令,但可操作不同数据。

DPU 的核心目标是“基础设施卸载与数据面加速”。它通常集成多核 ARM CPU、可编程数据面、网络接口、PCIe 控制器和加密引擎,能够把虚拟交换、存储协议、安全策略、RDMA 等任务从主机 CPU 卸载下来。DPU 的计算模型更接近“流水线 + 可编程包处理”,强调确定性、低抖动和高并发连接。

CPU / GPU / DPU 架构差异与协同关系 CPU 通用控制 · 低延迟 Core Core Core Core 大容量 Cache + 分支预测 + 乱序执行 适用:OS、协议栈、事务、控制逻辑 GPU 数据并行 · 高吞吐 SIMT 线程阵列 + 高带宽显存 适用:矩阵乘、卷积、向量、图计算 DPU 数据面卸载 · 低抖动 ARM 核 可编程 加密 网络 / 存储 / 安全 / RDMA 卸载 适用:虚拟交换、NVMe-oF、IPsec 典型协同模式:CPU 控制 + GPU 计算 + DPU 搬运 CPU 调度 / 下发任务 GPU 并行计算 / 训练推理 DPU 网络 / 存储 / 安全 NVLink / PCIe / RDMA 互联:GPU 显存与 DPU 数据面直接交换 减少主机内存拷贝,降低 CPU 参与度

二、计算模型对比:从线程到数据包

CPU 采用多核 MIMD 模型,每个核可执行不同指令流,适合任务级并行。GPU 采用 SIMT 模型,以 warp 为调度单位,强调同一指令下的数据并行。DPU 则采用“多核 ARM + 可编程流水线”的混合模型:控制面由 ARM 核处理,数据面由 P4/DPDK 等可编程引擎处理,强调每包处理时延的确定性。

维度 CPU GPU DPU
设计目标 低延迟、通用控制 高吞吐、数据并行 基础设施卸载、低抖动
典型核数 8~128 核 数千流处理器 多核 ARM + 可编程引擎
计算模型 MIMD / 乱序执行 SIMT / warp 调度 流水线 + 多核控制面
内存体系 多级 Cache + DDR 高带宽 HBM/GDDR 片上缓存 + 主机内存
适用负载 OS、数据库、协议栈 AI 训练、HPC、渲染 虚拟交换、存储、安全
与 NVLink 关系 控制与初始化 GPU 间高速互联主体 数据面接入与卸载

三、方法流程:异构任务如何划分与协同

在实际系统中,一个典型 AI 训练或推理任务会经历如下划分流程:

  1. 任务识别:判断哪些部分属于控制逻辑,哪些属于规则并行计算,哪些属于数据搬运与协议处理。
  2. CPU 侧准备:由 CPU 完成数据加载、参数初始化、任务调度和异常处理。
  3. GPU 侧计算:将矩阵乘、卷积、归一化等热点下沉到 GPU,通过 CUDA/HIP 内核执行。
  4. DPU 侧卸载:把网络收发、存储访问、加密解密、虚拟交换交给 DPU,减少主机 CPU 占用。
  5. 互联优化:利用 NVLink 或 RDMA 在 GPU 与 DPU 之间直接传输数据,避免多次主机内存拷贝。
关键原则:CPU 做“决策”,GPU 做“计算”,DPU 做“搬运与防护”。三者边界越清晰,集群整体效率越高。

四、案例场景:GPU 训练集群中的 DPU 卸载

假设一个 8 卡 GPU 训练节点,每张 GPU 通过 NVLink 与其他 GPU 互联,同时节点接入 200Gb/s RDMA 网络。若所有网络流量都由主机 CPU 处理,CPU 需要频繁处理中断、协议栈和内存拷贝,导致 GPU 等待数据。引入 DPU 后,网络流量由 DPU 直接处理,GPU 显存与 DPU 之间可通过 GPUDirect RDMA 或 NVLink 路径交换数据。

# 查看 GPU 与网卡拓扑关系
nvidia-smi topo -m

# 典型输出片段
#        GPU0  GPU1  NIC0  NIC1
# GPU0    X    NV12  PIX   SYS
# GPU1   NV12   X    SYS   PIX
# NIC0   PIX   SYS    X    PIX
# NIC1   SYS   PIX   PIX    X

# 启用 GPUDirect RDMA 后,数据路径可简化为:
# GPU 显存 -> NVLink/PCIe -> DPU -> 网络
# 而非:GPU -> 主机内存 -> CPU 协议栈 -> 网卡

在这个场景中,DPU 承担了虚拟交换、RDMA 传输和存储卸载,CPU 只负责训练框架调度,GPU 专注计算。NVLink 则负责 GPU 之间的梯度同步,形成“GPU 内联 + DPU 外联”的典型异构集群结构。

五、误区与复盘

常见误区一:认为 GPU 可以替代 CPU。GPU 不擅长分支复杂、串行依赖强的控制任务,操作系统和调度仍需要 CPU。
常见误区二:认为 DPU 只是“更快的网卡”。DPU 的价值在于可编程卸载和基础设施隔离,而不仅是带宽提升。
常见误区三:忽视数据搬运成本。若 GPU 与 DPU 之间仍经过主机内存多次拷贝,NVLink 和 RDMA 的收益会被抵消。

复盘时可以用三个问题检查异构协同是否合理:第一,热点计算是否真正落在 GPU 上;第二,网络与存储路径是否绕过了主机 CPU;第三,GPU 间通信是否使用了 NVLink 等高带宽链路。只有三者同时成立,异构计算集群才能发挥出接近线性的扩展效率。

总结来看,CPU、GPU、DPU 分别对应控制、计算、数据面三类职责。理解它们的架构差异和协同模式,是后续学习 NVLink 拓扑、GPU 直连通信和 DPU 卸载路径的基础。