
7 月 27 日,2026 夏季 InfiniTensor 训练营 CUDA 编程方向第四课《CUDA 基础入门:向量规约》开讲。
前三课依次讲解 CPU / GPU 架构差异、SIMT 基础概念、 Roofline 性能模型、GPU 多层内存架构、Shared Memory Bank Conflict,以及原子操作、Warp / 树状规约、Cooperative Groups 等多级并行规约优化方案。
本节课从 CPU / GPU 硬件差异切入,讲解 CUDA 完整编程模型、向量基础算子与并行向量规约实现,打通 CUDA 底层硬件到并行代码落地全链路。
CPU 与 GPU 硬件核心差异

- CPU:大量缓存、控制单元,计算单元少,适配复杂分支逻辑;
- GPU 海量计算单元,缓存占比极低,面向大批量连续并行数据运算。
- 关键区别:CPU 依赖 L3 缓存复用重复数据,GPU 依靠 Warp 切换掩盖访存延迟,不采用类似 CPU 的大容量共享 L3 Cache 设计。
- Warp 由 32 个线程组成,GPU 为每个 Warp 独立分配寄存器;GPU 一个 SM 可以同时驻留多个 Warp,Warp Scheduler 会在每个周期选择满足执行条件的 Warp 发射指令。当某个 Warp 因访存等原因等待时,调度器可以切换执行其他 ready Warp,从而隐藏访存延迟。
GPU 完整存储层级与性能差距

GPU 存储层级(速度由快至慢)
- 寄存器(RMEM):线程私有,常见单线程上限 255 个,变量直接映射寄存器;
- Shared Memory(SMEM):单 Block 线程共享,可编程,存在 Bug Conflict 性能隐患;
- 显存(GMEM):全局大容量存储。在大模型推理尤其是 Decode 阶段,显存带宽通常是影响性能的重要指标之一。
补充:L2 Cache 硬件自动缓存,不可手动控制,极限优化场景少量利用。
异步访存硬件革新
GPU 支持显存 ↔ Shared Memory 异步传输,访存与计算可并行执行,大幅掩盖内存延迟;新一代 TMA 硬件进一步节省寄存器开销。
GPU 的计算单元

1. SM 基础组成
单 SM 包含多组 Sub Core、Warp 调度器、CUDA Core、Tensor Core,每 Block 固定调度至单一 SM 执行,不可跨 SM。
2. CUDA Core 与 Tensor Core 区分
- CUDA Core:GPU 中负责通用计算的执行单元,支持多种运算类型;
- Tensor Core 专用矩阵乘硬件,一次指令完成批量矩阵计算。
3. 线程数工程规范
单 Block 推荐 128 / 256 个线程(4 个 Warp),匹配 SM 内调度单元,充分利用硬件算力;线程过多会出现寄存器溢出,严重降低性能。
CUDA 编程模型基础

三类函数修饰符

__global__:CPU 调用、GPU 执行,标准 Kernel 函数,无返回值;__device__:仅 GPU 内部调用,建议强制内联消除函数调用开销;__host__:普通 CPU 串行函数。
Grid / Block / Thread 任务划分

- Grid:任务总容器,由若干 Block 组成;
- Block:CUDA 编程中的线程组织单位,也是资源分配和调度的基本单位,同一 Block 内线程可以共享 Shared Memory;
- Thread:最小执行单元,通过 BlockIdx、ThreadIdx 计算全局数据索引。
Kernel 完整执行流程
cudaMalloc在显存分配空间;cudaMemcpy主机 ↔ 显存拷贝数据;- 启动 Kernel 执行并行计算;
- 拷贝计算结果回主机,释放显存。
SIMT 架构特点
所有线程执行同一套代码,通过不同线程索引访问不同数据;同一 Warp 内分支判断会产生线程空转(Warp 发散),尽量避免复杂控制流。
Vector Add 向量加法
任务特性
向量加法属于逐元素无关计算,各线程处理独立数据,无线程间数据依赖,无同步需求。
并行划分思路
- 按线程均分向量元素,每个线程仅计算一组 X + Y = Z;
- 线程处理数据保持内存连续,优化显存读取效率。


Vector Reduction 向量规约

串行 vs 并行规约
- 串行规约单线程循环累加,速度极慢;
- 并行规约拆分多线程分段求和,再逐层聚合得到最终结果。

两层分层规约流程
- 线程内规约:单线程循环累加分段内全部元素,结果存入寄存器;
- Block 内树状规约:将寄存器结果写入 Shared Memory,通过
__syncthreads()同步,对半聚合逐层合并。

规约加速
- Warp Shuffle:
__shfl_down_sync寄存器内直接交换数据,无需 Shared Memory; - CUB 是 NVIDIA 提供的 CUDA 高性能并行算法库,工程开发优先复用。


加入训练营
📺完整课程内容,请观看直播或查看课程回放:
InfiniTensor 官网: https://www.infinitensor.com
B站直播: InfiniTensor 官方直播间
视频号直播: InfiniTensor 视频号预约
答疑交流: 训练营官方社群⬇️

关注与交流

