2. 异构计算基础
在 DPU/GPU 与 NVLink 集群互联的课程中,第一步不是直接讨论链路带宽,而是先建立“异构计算”的基本认知:CPU、GPU、DPU 是三类设计目标完全不同的处理器,它们不是简单的“快与慢”关系,而是分别面向延迟敏感控制、吞吐型并行计算、数据搬运与基础设施卸载。理解三者的架构差异、计算模型和协同模式,才能理解为什么 NVLink 会成为连接 GPU 与 DPU 的关键纽带。
一、核心原理:三种处理器的设计哲学
CPU 的核心目标是“通用与低延迟”。它拥有复杂的乱序执行、分支预测、大容量缓存和较强的单线程性能,适合处理不规则控制流、操作系统调度、协议栈、数据库事务等任务。CPU 的核数通常较少,但每个核都能独立处理复杂逻辑。
GPU 的核心目标是“吞吐与数据并行”。它由大量简化控制逻辑的流处理器组成,通过成千上万个线程隐藏内存访问延迟。GPU 擅长矩阵乘、卷积、向量计算、图遍历等规则化并行负载。其计算模型通常表现为 SIMT(单指令多线程):同一 warp 内线程执行相同指令,但可操作不同数据。
DPU 的核心目标是“基础设施卸载与数据面加速”。它通常集成多核 ARM CPU、可编程数据面、网络接口、PCIe 控制器和加密引擎,能够把虚拟交换、存储协议、安全策略、RDMA 等任务从主机 CPU 卸载下来。DPU 的计算模型更接近“流水线 + 可编程包处理”,强调确定性、低抖动和高并发连接。
二、计算模型对比:从线程到数据包
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 训练或推理任务会经历如下划分流程:
- 任务识别:判断哪些部分属于控制逻辑,哪些属于规则并行计算,哪些属于数据搬运与协议处理。
- CPU 侧准备:由 CPU 完成数据加载、参数初始化、任务调度和异常处理。
- GPU 侧计算:将矩阵乘、卷积、归一化等热点下沉到 GPU,通过 CUDA/HIP 内核执行。
- DPU 侧卸载:把网络收发、存储访问、加密解密、虚拟交换交给 DPU,减少主机 CPU 占用。
- 互联优化:利用 NVLink 或 RDMA 在 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 间通信是否使用了 NVLink 等高带宽链路。只有三者同时成立,异构计算集群才能发挥出接近线性的扩展效率。
总结来看,CPU、GPU、DPU 分别对应控制、计算、数据面三类职责。理解它们的架构差异和协同模式,是后续学习 NVLink 拓扑、GPU 直连通信和 DPU 卸载路径的基础。