Blackwell GPU 执行模型详解

GPU Execution Model — Blackwell GPU 执行模型详解

来源: Modern GPU Programming For MLSys (MLC Community)
章节: Part I, Chapter 1 — GPU Execution Model
目标架构: NVIDIA Blackwell
整理时间: 2026-06-24


📌 核心摘要

本章系统介绍了现代 GPU(以 Blackwell 架构为代表)的执行模型,涵盖三个核心维度:

  1. 线程层级(Thread Hierarchy):从 Thread 到 Grid 的嵌套分组结构
  2. 内存空间(Memory Spaces):GMEM → SMEM → TMEM → Register 的数据通路
  3. 计算引擎(Compute Engines):CUDA Cores 与 Tensor Cores 的分工协作

核心思想:内核是一个流水线,数据在这些内存空间之间流动,并在独立的计算与数据传输引擎之间交接工作。反复的目标是让这些引擎同时保持忙碌


一、执行层级(The Execution Hierarchy)

GPU 不将数千个线程呈现为扁平池,而是分组为嵌套层级结构,每一层级的存在都是为了在特定尺度上使协作成本最低

1.1 线程层级结构

Grid
└── Cluster(集群)
└── CTA / Thread Block(协作线程数组)
└── Warpgroup(线程组)
└── Warp(线程束)
└── Thread(线程)

1.2 各层级详解

层级线程数描述关键特性
Thread1标量执行单元每线程拥有独立 PC 和寄存器,由 Warp 内的 Lane ID 标识
Warp32SIMT 执行单元32 个线程执行同一条指令,各自保持独立寄存器,可独立 Mask(支持分支)
Warpgroup1284 个连续 WarpHopper 引入,作为 wgmma 的发起单元;Blackwell 中增加 TMEM 协作角色
CTA可变硬件调度的基本单元运行在单个 SM 上,拥有私有 SMEM;多个 CTA 可共存于同一 SM
Cluster多 CTA协作 CTA 组可跨 SM,支持 CTA 间同步和分布式共享内存(DSMEM)
Grid全部Kernel 启动的所有 CTA由 Host 发起的完整执行网格

1.3 Blackwell 的关键变化

Blackwell 的关键操作不是由同一组线程发起的,每种操作有其天然的粒度。
| 操作 | 发起粒度 | 描述 |
|------|----------|------|
| TMA 拷贝 | 单线程 | 一个线程发出命令,硬件引擎搬运整个 Tile |
| TMEM ↔ 寄存器 | Warpgroup | 4 个 Warp 协作,每个 Warp 移动 TMEM Tile 的自己的切片 |
| tcgen05 MMA | 选举线程 | 一个选举出的线程提交,Tensor Core 执行 |
| Cluster MMA | 2-CTA | 跨两个 CTA 的协作 MMA |
Scope(作用域):运行某个操作的线程集合,是本书三大核心设计要素(Scope / Layout / Dispatch)中的第一个。


二、内存空间(Memory Spaces)

不存在同时兼具大容量和高速度的单一内存。物理规律决定了容量与速度的权衡,GPU 因此提供多种内存,每种在权衡曲线上处于不同位置。

2.1 内存层级总览

内存归属角色说明
Global (GMEM)设备级持久化 Tensor 存储大容量 HBM,所有 SM 共享
Shared (SMEM)每 CTA(一个 SM)Tile 中转站低延迟 Scratchpad;B200 上每 SM 可达 228 KB
Tensor Memory (TMEM)每 CTAMMA 累加器存储Blackwell 新增;tcgen05 专用
Register File (RF)每线程标量和每线程 Tile Fragment最快;存放 Epilogue/临时值

2.2 数据通路

GMEM → SMEM → [计算] → 寄存器 → SMEM → GMEM
↑
TMEM(存放累加器)
2.3 TMEM 详解(Blackwell 新增)

TMEM 是 Blackwell 独有的内存空间,在之前架构上没有对应物。
为什么需要 TMEM?

  • 之前的 GPU 将大型 MMA 累加器存放在寄存器中,与线程的其他值争夺稀缺资源
  • 寄存器是固定的每线程资源,随着 MMA Tile 增大,累加器 Fragment 也增大,开始挤占线程需要的其他值
  • 更大的 Tile 对 Tensor Core 吞吐量有利,但把整个累加器保持在寄存器中使大 Tile 更难使用
    TMEM 设计
  • CTA 作用域的 2D Scratchpad:128 Lane × 最多 512 列(32-bit)
  • tcgen05.mma 将累加器写入 TMEM 而非寄存器
  • 内核需在 Epilogue 阶段将 TMEM 显式读回寄存器
    两个重要后果
  1. TMEM 读取是显式的、Warpgroup 分布式的——由 4 个 Warp 协作完成
  2. TMEM 必须显式分配和释放(不像寄存器由编译器自动分配)

三、Cluster 的分布式共享内存(DSMEM)

3.1 问题
  • 单个 CTA 运行在一个 SM 上,使用该 SM 的 SMEM
  • 但单个 CTA 的 SMEM 预算是有限的
  • 大 Tile 常常需要比单个 Block 能提供的更多的操作数存储或复用
3.2 解决方案:Thread Block Cluster

Hopper 引入了 Thread Block Cluster:一组 CTA 比独立 Block 更紧密地协作:

  • 可以彼此同步
  • 可以读写彼此的共享内存(DSMEM)
    Blackwell 保留了 Cluster 并增强了它:
  • 动态调度(Cluster Launch Control)
  • 2-CTA 协作 MMA
3.3 DSMEM 工作机制
  • CTA 可以寻址和访问对等 CTA 的 SMEM
  • 线程可以在对等 CTA 的 SMEM 中指定位置,直接将 Tile 从自己的 SMEM 批量拷贝到对等的 SMEM
  • 字节落地后触发完成 Barrier
  • 2-CTA Cluster GEMM 正是基于此机制,在两个 CTA 之间共享操作数 Tile,无需通过全局内存中转

在这里插入图片描述

四、计算引擎:CUDA Cores 与 Tensor Cores

SM 提供两种不同的数学引擎,而非一种。两者之间的分工塑造了几乎每个内核的编写方式。

4.1 两种引擎对比

引擎类型角色特点
CUDA Cores通用 SIMT ALU标量和向量指令处理索引算术、Elementwise 数学、归约、控制流——围绕重型矩阵工作的"胶水逻辑"
Tensor Cores专用固定功能单元密集矩阵乘加在 Tile 粒度上执行 D = AB + C 单指令完成

4.2 为什么这个分工很重要

Tensor Cores 的算术吞吐量比 CUDA Cores 高约 10 倍以上(FLOP/s)。密集线性代数(GEMM、卷积、Attention)只有在 Tensor Cores 上运行时才能达到峰值性能。
获取性能的关键在于:保持 Tensor Cores 持续有数据可消费。

4.3 代际演进

代际Tensor Core 变化
Hopper引入异步 Warpgroup MMA(wgmma.mma_async)
Blackwell第五代 Tensor Core(tcgen05),累加器存放在 TMEM 而非寄存器

4.4 Cluster 对引擎的扩展
2-CTA 协作 MMA:两个 CTA 各自贡献 SMEM 操作数到单个更大的 Tensor Core MMA Tile
TMA 多播:数据移动引擎的一次加载可将同一 GMEM Tile 交付给多个 CTA,消除独立加载产生的冗余全局流量

五、GEMM 数据流水线(The GEMM Data Pipeline)

5.1 三阶段流水线

在这里插入图片描述

以通用矩阵乘法(GEMM)为例,单个 GEMM Tile 流经三个阶段:

┌─────────────────────────────────────────────────────────┐
│ GEMM 三阶段流水线 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Load │ → │ Compute │ → │ Epilogue │ │
│ │ │ │ │ │ │ │
│ │ TMA 拷贝 │ │ tcgen05 │ │ TMEM → │ │
│ │ GMEM → │ │ MMA │ │ 寄存器 → │ │
│ │ SMEM │ │ SMEM → │ │ GMEM │ │
│ │ │ │ TMEM │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ 单线程发起 选举线程发起 Warpgroup 协作 │
│ 字节计数Barrier 完成Barrier TMA Store │
└─────────────────────────────────────────────────────────┘

阶段 1:Load
  1. TMA 拷贝将 A 或 B 操作数 Tile 从 GMEM 流式传输到 SMEM
    一个线程发出拷贝,提前记录预期到达的字节数
    TMA 引擎报告进度,完成 Barrier 在所有预期字节交付后才翻转
阶段 2:Compute

tcgen05 MMA 从 SMEM 读取操作数 Tile,将乘积累加到 TMEM Tile
一个选举出的线程提交,完成后发出 Barrier 信号

阶段 3:Epilogue

Warpgroup 将 TMEM 累加器读回寄存器
将结果转换为目标输出数据类型
存储到 GMEM(通常通过 SMEM 中转并发出 TMA Store)

5.2 慢内核 vs 快内核

写成这样三个阶段看起来是严格串行的,但慢内核和快内核的全部区别在于重叠(Overlap)。
慢内核(Naive)

加载 → 等待 → 计算 → 等待 → 存储

每个引擎在等待前一个引擎完成时空闲。

快内核(Pipeline)

时间轴:
TMA:    [Tile k-1 Load] [Tile k Load]   [Tile k+1 Load]
MMA:          [Tile k-1 Compute] [Tile k Compute]   [Tile k+1 Compute]
Epilogue:         [Tile k-2 Writeback] [Tile k-1 Writeback] [Tile k Writeback]
  • Tensor Core 在计算 Tile k 时
  • TMA 引擎已经在获取 Tile k+1
  • Epilogue 正在排出 Tile k-1
  • 三个引擎同时保持忙碌
5.3 安全交接的关键

让三个异步引擎安全交接工作,正是 Barrier 和 Phase 模型(Async Coordination: mbarriers)的职责。Part III 的 GEMM 优化阶梯正是建立在此基础之上。

六、核心设计要素

贯穿全书的三个核心设计要素:

要素含义示例
Scope运行操作的线程集合单线程发起 TMA、Warpgroup 协作 TMEM、2-CTA 协作 MMA
Layout数据在内存中的物理排列SMEM Swizzle、TMEM 2D 布局、寄存器 Fragment
Dispatch操作如何被触发和执行TMA 引擎、tcgen05、CUDA Core 指令
源码直接下载地址: https://pan.quark.cn/s/95437fdf229e Intel I-219V网卡驱动是一款专门为Intel的I-219V千兆以太网控制器而研发的驱动程序,其主要作用在于保障在Ubuntu 16.04操作系统环境下的正常运作以及优化系统性能。Intel I-219V作为一款广泛应用的内置网络接口控制器(NIC),常被集成在台式机及笔记本电脑的主板上,负责提供高速的网络连接服务。Intel公司所提供的e1000e驱动是与此硬件相配套的开源驱动解决方案,其中版本3.3.5.3是专门针对该硬件设备的定制版本。此驱动包含了不可或缺的源代码部分,赋予开发者和系统管理者按照特定需求进行编译和定制的权限,从而能够适应多样化的系统配置或针对特定情形进行问题解决。源代码的可用性同样表明用户有能力依据Linux内核的更新情况来升级驱动,确保与最新技术标准的兼容性。在Ubuntu 16.04系统中成功编译的驱动意味着它已经通过了严苛的测试流程,并能够与该版本的Linux内核实现良好兼容。Ubuntu 16.04,其代号为Xenial Xerus,是一个长期支持(LTS)的版本,因此对于那些追求系统稳定性和安全保障的用户群体而言具有特殊的意义。驱动程序的兼容性保障了I-219V网卡能够在该系统平台上实现无缝运行,提供稳定可靠的网络连接,这既包括局域网(LAN)的连接,也可能涵盖通过Wi-Fi桥接实现的无线网络连接。驱动程序的核心职责涵盖了网络接口的初始化与管理、数据包的接收与发送处理,以及错误检测与纠正功能的执行。在Linux操作系统架构中,驱动通常以模块的形式加载至内核之中,这种设计允许在非必要时期进行卸载操作,以此来有效节省系统资源。e1000e驱...
内容概要:本文围绕基于共识的捆绑算法(CBBA)在多智能体系统中的多任务分配问题展开研究,重点应用于远程太空船交会与维修的相对轨道操作(RPO)规划。通过Matlab代码实现了CBBA算法,系统地解决了多个航天器在复杂空间环境下协同执行多目标任务时的任务分配、路径规划与动态协商问题。研究详细展示了算法在任务分解、竞标机制、共识达成及冲突消解等方面的核心逻辑,验证了其在分布式决策、通信受限条件下的高效性与鲁棒性,并结合航天工程实际背景突出了算法的应用价值。该资源不仅提供完整的仿真代码,还包含详细的流程解析,有助于深入理解多智能体协同机制的设计原理。; 适合人群:具备控制理论、航天器动力学、多智能体系统或分布式优化背景的研究生、科研人员及航空航天领域工程技术人员,熟练掌握Matlab编程者尤佳。; 使用场景及目标:①应用于在轨服务、空间碎片清除、多航天器编队飞行、星座维护等多智能体协同任务的任务分配与规划;②为研究人员提供CBBA算法的实现范例,支撑其开展分布式任务规划算法的改进与扩展研究;③作为教学案例用于高级课程中讲解多智能体协同决策机制。; 阅读建议:建议结合Matlab代码逐模块分析算法实现过程,重点关注任务打包、竞标更新、共识收敛等关键环节,可尝试引入通信延迟、故障容错或障碍规避机制以进一步提升算法实用性。
内容概要:本文介绍了一种基于关键场景辨别算法的两阶段鲁棒微网优化调度方法,旨在有效应对风电等可再生能源出力不确定性带来的调度挑战。通过Matlab代码实现,构建了包含预调度与实时调整的两阶段鲁棒优化模型,第一阶段制定初始调度计划以应对不确定性,第二阶段根据实际运行数据进行修正,从而提升微网运行的经济性与可靠性。该方法结合场景生成与缩减技术,识别关键不确定性场景,降低计算复杂度,同时增强了调度方案的鲁棒性。文中还探讨了该方法与智能优化算法、机器学习及电力系统仿真工具的集成应用,展现了其在复杂综合能源系统中的广阔应用前景。; 适合人群:具备一定电力系统基础知识和Matlab编程能力,从事新能源、微网优化、不确定性建模与鲁棒调度等领域研究的科研人员、工程技术人员及研究生。; 使用场景及目标:①应用于高比例可再生能源接入的微电网优化调度,提高系统对源荷不确定性的适应能力与运行稳定性;②为科研人员提供可复现的两阶段鲁棒优化建模与求解范例,支撑高水平学术论文的复现、算法改进与创新研究。; 阅读建议:建议结合提供的Matlab代码与网盘资料,动手实践关键场景生成、不确定性建模、两阶段优化建模与求解全过程,重点关注鲁棒优化框架的设计逻辑与关键场景辨别的实现机制,同时参考文中提及的多种算法与工具,拓展研究思路与应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

self-motivation

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值