AI Infra 学习必知GPU 流处理器SM深度解析与核心要点作为一名 AI Infra 工程师如果你只能深入理解一个 GPU 硬件概念那一定是流多处理器Streaming Multiprocessor, SM。它是 GPU 的心脏和基本计算单元决定了 GPU 的并行能力上限也是所有 AI 训练和推理性能优化的最终落脚点。不理解 SM你就无法真正解释为什么同样的 FLOPS 不同 GPU 实际性能差异巨大为什么有些算子跑不满 GPU为什么混合精度训练能带来数倍加速更不用说进行底层的 kernel 优化和大模型性能调优了。一、从宏观到微观GPU 架构的层级结构在深入 SM 之前我们先建立一个清晰的 GPU 整体架构认知。现代 GPU 采用严格的分层设计从大到小依次是GPU 芯片 ├── 图形处理集群GPC │ ├── 纹理处理集群TPC │ │ └── 流多处理器SM← 我们今天的主角 │ │ ├── 计算核心CUDA Core/Tensor Core │ │ ├── 调度单元Warp Scheduler │ │ └── 存储单元寄存器/共享内存/L1缓存 ├── L2 缓存 └── HBM 显存控制器核心认知GPU 不是一个单一的处理器而是由数十到上百个独立的 SM 组成的计算集群。每个 SM 都是一个功能完备的迷你处理器拥有自己的计算、调度和存储资源能够独立执行线程块如下图所示。以当前主流的数据中心 GPU 为例NVIDIA A100108 个 SMNVIDIA H100144 个 SMNVIDIA B100160 个 SMSM 数量直接决定了 GPU 的理论峰值算力。例如H100 的 FP16 峰值算力 144 SM × 4 Tensor Core/SM × 256 FMA/周期 × 1.83 GHz ≈ 335 TFLOPS。二、SM 的解剖学内部组件详解一个现代的 SM以 Hopper H100 为例是一个高度复杂的单元集成了执行计算、调度和存储所需的一切。根据下图我们可以将其分为三大核心模块2.1 执行核心真正干活的劳动者这是 SM 内部执行数学运算的硬件单元也是 AI 算力的直接来源。核心类型主要功能AI 工作负载中的作用FP32 CUDA Core32位单精度浮点运算传统科学计算、部分算子的通用计算INT32 Core32位整数运算地址计算、循环计数、量化推理FP64 Core64位双精度浮点运算高精度科学计算AI 中很少使用Tensor Core硬件化矩阵乘加GEMMAI 训练和推理的绝对主力SFU特殊功能单元超越函数sin/cos/exp等激活函数计算关键区别CUDA Core 一次只能执行一个标量运算a×bc而 Tensor Core 一次能执行一个完整的矩阵乘加运算DA×BC。对于 AI 中无处不在的矩阵乘法Tensor Core 能提供比 CUDA Core 高 10-20 倍的性能。2.2 调度单元让核心不闲着的管理者SM 的高效运行离不开强大的调度系统。现代 SM 通常包含多个 Warp 调度器和分发单元Warp 调度器负责管理和调度 Warp32 个线程的组的执行分发单元将指令分发给对应的计算核心指令缓存存储 SM 要执行的指令核心机制延迟隐藏。当一个 Warp 因为等待数据从显存返回而暂停时Warp 调度器不会等待而是立即切换到另一个准备就绪的 Warp 执行。这种硬件级的线程切换几乎没有开销是 GPU 实现高吞吐量的关键。2.3 存储单元靠近计算的数据仓库SM 内部集成了多级高速存储以减少对外部慢速显存的访问。速度从快到慢依次是寄存器文件GPU 上最快的存储每个 SM 拥有巨大的寄存器文件H100 每个 SM 有 256 KB。寄存器被动态分配给活跃线程用于存放临时变量。共享内存程序员可控的片上存储线程块内的所有线程可以共享访问。H100 每个 SM 最多可配置 228 KB 共享内存。L1 缓存自动管理的高速缓存用于缓存频繁访问的数据和指令。重要比例在 AI 工作负载中内存访问往往是性能瓶颈而不是计算。因此如何高效利用 SM 内部的高速存储是性能优化的核心。三、SM 的核心工作原理SIMT 执行模型GPU 采用单指令多线程(Single Instruction, Multiple Threads, SIMT)执行模型这是它与 CPU 最根本的区别。3.1 什么是 SIMT比喻想象一个工厂车间SM里面有 32 个工人CUDA Core。车间主任Warp 调度器喊一声把手上两个数相乘32 个工人同时执行这同一条指令但每个人算不同的数。核心特点一条指令同时驱动 32 个线程一个 Warp所有线程必须步调一致执行相同的指令如果线程出现分支if-else不同分支的线程会被串行执行效率暴跌3.2 线程的层级结构CUDA 编程模型将线程组织成三级结构Grid一个 Kernel 启动的所有线程的集合Block线程块Grid 被划分为多个线程块每个线程块被分配到一个 SM 上执行Warp线程块被进一步划分为多个 Warp每个 Warp 包含 32 个线程是 SM 调度的基本单位关键规则一个线程块一旦被分配到某个 SM就会一直在该 SM 上执行直到完成一个 SM 可以同时驻留多个线程块H100 每个 SM 最多可驻留 32 个线程块一个 SM 可以同时管理数千个线程但同一时刻只有少数几个 Warp 在执行3.3 延迟隐藏的工作过程Warp A 执行一条加载指令需要从全局显存获取数据延迟约 400-800 个时钟周期Warp 调度器立即切换到 Warp B执行它的指令当 Warp B 也遇到长延迟操作时再切换到 Warp C当 Warp A 的数据到达时它重新进入就绪队列等待调度结论GPU 通过用并行性换延迟的方式实现高吞吐量。要让 GPU 跑满必须提供足够多的并行线程来隐藏各种延迟。四、Tensor CoreAI 时代 SM 的心脏如果说 SM 是 GPU 的心脏那么 Tensor Core 就是 SM 的心脏。自 Volta 架构引入以来Tensor Core 已经成为 AI 算力的绝对主导者。4.1 Tensor Core 是什么Tensor Core 是一种硬件化的矩阵乘加MMA单元。它不是执行单一的加法或乘法而是一次性完成一个完整的矩阵乘法运算。基本操作D A × B CA 和 B 是输入矩阵C 是累加矩阵D 是输出矩阵4.2 Tensor Core 的性能优势以 H100 的第四代 Tensor Core 为例每个 Tensor Core 每周期可执行 256 个 FP16 FMA 运算每个 SM 有 4 个 Tensor Core每个 SM 每周期可执行 1024 个 FP16 FMA 运算相比之下每个 SM 只有 128 个 FP32 CUDA Core每周期只能执行 128 个 FMA 运算8 倍的理论性能差距这就是为什么混合精度训练能带来数倍加速的根本原因——它能充分利用 Tensor Core。4.3 Tensor Core 支持的精度格式随着架构演进Tensor Core 支持的精度格式越来越丰富专门针对 AI 工作负载优化架构支持的精度格式典型应用VoltaFP16早期深度学习训练AmpereFP16, BF16, TF32, INT8主流训练和推理HopperFP16, BF16, TF32, FP8, INT8, INT4大模型训练和高吞吐推理BlackwellFP16, BF16, TF32, FP8, NVFP4, INT4极致推理性能NVFP4Blackwell 架构引入的全新 4 位浮点格式结合双级缩放机制在保持精度的同时将推理吞吐量再提升一倍。五、SM 架构演进从 Ampere 到 BlackwellNVIDIA 每一代 GPU 架构都会对 SM 进行重大改进以更好地适应 AI 工作负载的需求。5.1 AmpereA100AI 架构的里程碑首次引入 TF32 精度在保持 FP32 精度的同时利用 Tensor Core 加速支持结构化稀疏进一步提升 Tensor Core 性能引入异步内存拷贝减少数据搬运开销每个 SM64 个 FP32 Core4 个第三代 Tensor Core256 KB 寄存器文件164 KB L1/共享内存5.2 HopperH100Transformer 优化第四代 Tensor Core支持 FP8 精度Transformer 引擎线程块集群Thread Block Cluster允许 SM 之间直接访问共享内存分布式共享内存DSMEM提升 SM 间通信效率每个 SM128 个 FP32 Core4 个第四代 Tensor Core256 KB 寄存器文件228 KB L1/共享内存5.3 BlackwellB100推理性能的飞跃第五代 Tensor Core支持 NVFP4 精度第二代 Transformer 引擎双线程块 MMA成对的 SM 协同工作共享操作数每个 SM 配备 256 KB Tensor 内存TMEM专门为 Tensor Core 提供数据统一 INT32/FP32 流水线提高资源利用率每个 SM128 个统一 INT32/FP32 Core4 个第五代 Tensor Core256 KB 寄存器文件256 KB TMEM演进趋势越来越多的硅片面积被分配给 Tensor Core 和专用 AI 加速单元通用计算单元的比例逐渐下降。这反映了 GPU 从通用并行处理器向 AI 专用处理器的转变。六、AI Infra 工程师必须掌握的 SM 相关性能优化要点理解 SM 架构的最终目的是为了优化 AI 工作负载的性能。以下是每个 AI Infra 工程师都应该掌握的核心优化原则6.1 充分利用 Tensor Core使用混合精度训练FP16/BF16 训练能充分利用 Tensor Core带来 2-4 倍的性能提升使用 FP8 训练H100 及以上 GPU 支持 FP8 训练可进一步提升 2 倍性能确保矩阵维度对齐Tensor Core 对矩阵维度有特定要求如 16 的倍数对齐后才能获得最佳性能使用优化的 BLAS 库cuBLAS、CUTLASS 等库已经针对 Tensor Core 做了深度优化6.2 提高 SM 占用率SM 占用率是指 SM 上实际驻留的 Warp 数与最大可驻留 Warp 数的比值。高占用率是隐藏延迟、提高吞吐量的关键。影响占用率的因素每个线程使用的寄存器数量每个线程块使用的共享内存数量每个线程块的线程数优化方法减少每个线程的寄存器使用量合理设置线程块大小通常 128、256 或 512 个线程避免使用过多的共享内存6.3 优化内存访问模式合并内存访问让同一个 Warp 内的线程访问连续的内存地址这样可以合并成一个内存事务利用共享内存将频繁访问的数据加载到共享内存中减少对全局显存的访问避免分支发散尽量让同一个 Warp 内的线程执行相同的代码路径使用异步内存拷贝Ampere 及以上架构支持全局内存直接到共享内存的异步拷贝减少寄存器使用和延迟6.4 合理分配工作负载确保足够的并行性启动的线程块数量应该至少是 SM 数量的 4 倍这样才能让所有 SM 都忙碌起来负载均衡尽量让每个线程块的工作量相同避免出现木桶效应避免过小的 KernelKernel 启动有一定的开销过小的 Kernel 会导致开销占比过高七、常见误区与最佳实践误区 1FLOPS 越高实际性能越好真相理论 FLOPS 只是一个上限实际性能取决于能否有效利用这些 FLOPS。很多时候内存带宽才是真正的瓶颈。最佳实践计算算法的算术强度计算量/内存访问量与 GPU 的运算强度FLOPS/带宽进行比较判断是计算受限还是内存受限。误区 2线程越多性能越好真相过多的线程会导致寄存器和共享内存不足反而降低 SM 占用率和性能。最佳实践通过实验找到最佳的线程块大小和网格大小通常在 128-512 个线程/块之间。误区 3所有算子都应该用 Tensor Core 加速真相Tensor Core 只擅长矩阵乘法对于其他类型的算子如逐元素操作、规约使用 CUDA Core 可能更高效。最佳实践根据算子的计算特性选择合适的加速单元不要盲目追求 Tensor Core 利用率。八、总结与学习建议SM 是 GPU 架构的核心也是 AI Infra 工程师必须深入理解的概念。它的设计哲学——“用并行性换延迟”、“专用硬件加速特定工作负载”——贯穿了整个 GPU 的发展历程。核心要点回顾SM 是 GPU 的基本计算单元GPU 的整体性能主要取决于 SM 的数量和每个 SM 的计算能力SM 采用 SIMT 执行模型以 Warp32 个线程为基本调度单位Tensor Core 是 AI 算力的核心能提供比 CUDA Core 高 10-20 倍的矩阵运算性能性能优化的关键是充分利用 Tensor Core、提高 SM 占用率、优化内存访问模式学习建议动手写几个简单的 CUDA Kernel观察不同线程块大小和内存访问模式对性能的影响使用 NVIDIA Nsight 工具分析 Kernel 的执行情况查看 SM 占用率、Tensor Core 利用率等指标阅读 cuBLAS、CUTLASS 等优化库的源码学习它们是如何充分利用 SM 资源的关注 NVIDIA 每一代新架构的技术白皮书了解 SM 架构的最新演进理解 SM 只是 AI Infra 学习的起点但它是最重要的起点。只有深入理解了硬件底层你才能写出真正高效的 AI 系统在大模型时代发挥出 GPU 的全部潜力。附录SM流式多处理器全模块拆解解析安培架构这张是NVIDIA第二代光追第三代Tensor Core架构SMAmpere安培架构SM整个SM由4组子执行簇共享L1/纹理/RT单元构成逐块拆分各模块功能一、橙色模块L0 I-Cache Warp Scheduler Dispatch每组子单元顶部橙色栏4套1. L0 I-Cache零级指令缓存功能存储当前活跃Warp32线程为1个Warp的机器指令从L2缓存预取指令给Warp调度器快速喂指令减少指令取指延迟是指令流水线最前端的缓存。2. Warp SchedulerWarp调度器CUDA最小调度单位是Warp32线程调度器负责从就绪Warp队列挑选符合条件的Warp根据指令类型算数/访存/特殊函数分发到对应运算单元标注32 thread/clk单周期最多调度分发32个线程1个完整Warp。3. Dispatch指令派发单元把调度器选定的指令路由发送到下方FP32/INT32、LD/ST、SFU、Tensor Core等不同执行流水线完成指令分发。二、深蓝色块Register File (16384 × 32-bit4组独立寄存器堆)CUDA通用寄存器堆16384×32bit单块寄存器总容量16384个32位通用寄存器功能每个线程的局部变量、中间运算结果全部存在通用寄存器中是GPU线程的高速片上寄存器Warp执行时从寄存器读源操作数、写入运算结果寄存器是CUDA性能关键资源寄存器占用量直接限制单个SM能并发的线程数量。整SM共4份寄存器堆每份独立供给下方1组FP/Tensor运算簇。三、绿色运算阵列每组子单元分三块2×FP32/INT32 1×Tensor Core共4组1. FP32 / INT32 算数核心两大片绿色通用ALU阵列FP32单精度浮点运算单元32位浮点数图形光栅化、通用科学计算、CUDA基础浮点运算INT3232位整数运算单元地址计算、逻辑运算、整型算法、分支判断安培架构该单元FP32和INT32硬件同核分时复用同一套ALU可以跑浮点/整数指令是SM最通用的计算资源承担绝大部分通用图形、CUDA内核计算。2. TENSOR CORE 3rd Gen第三代张量核心右侧整块深绿AI专用加速硬件第三代Tensor Core支持FP16/BF16/TF32/INT8/INT4混合精度矩阵乘加GEMM用途深度学习推理/训练、AI超分辨率、DLSS超采样、神经网络卷积加速专门吃掉矩阵运算AI算力主力硬件内部集成矩阵乘法器累加器单周期完成大批量矩阵运算大幅降低通用FP32单元负载。四、暗红色底层单元LD/ST SFU每组运算阵列最下方红块1. LD/STLoad/Store 载入/存储单元4个一组片上数据访存单元负责线程从Shared Memory/L1/全局内存读数据Load、把运算结果写回内存Store所有需要读写显存/共享内存的指令都走LDST流水线是数据通路分离「计算」和「访存」流水线避免占用FP32算力。2. SFUSpecial Function Unit 特殊函数单元最右侧小红块特殊数学函数专用硬件计算sin/cos/log/sqrt/exp/倒数等超越数学函数不占用FP32通用核心资源单独硬件加速复杂数学运算图形纹理采样、物理计算高频用到。五、跨4个子簇的横向公共模块SM下半部分横向长条1. 128KB L1 Data Cache / Shared Memory蓝绿色长条全SM共享L1数据缓存 CUDA共享内存物理同一块片上存储逻辑分区Shared Memory共享内存CUDA同一个Block内所有线程高速互通数据片上极低延迟程序员可手动分配大小是CUDA并行优化核心L1 Data Cache自动缓存全局内存读写数据对图形管线、不可控访存做硬件缓存安培架构SM统一128KB物理存储可配置划分L1缓存/Shared Memory占比。2. TexTexture Unit 纹理单元4个并列蓝色块图形纹理采样硬件负责纹理贴图寻址、双线性/三线性纹理过滤、各向异性过滤除光栅化纹理读取外CUDA也可以用纹理缓存做带硬件插值的只读数据寻址。六、最下方黄色大块RT CORE 2nd Generation第二代光线追踪核心硬件光追专用加速单元整SM共用核心功能光线与包围盒(AABB)/三角形求交测试光追中最耗时的BVH遍历、相交计算硬件加速用途实时光线追踪光栅化光线追踪混合渲染RTX实时光影、反射折射、全局光照第二代RT Core优化了BVH遍历效率支持运动模糊几何体相交加速。整体架构总结1个SM 4个独立执行子块每子块调度寄存器FPTensorLDSTSFU 全SM共享L1/Shared纹理单元RT光追单元GPU由数十~上百个SM阵列组成SM是NVIDIA GPU算力的最小组成单元。
AI Infra 硬件体系与编程模型:3. GPU 流处理器解析
AI Infra 学习必知GPU 流处理器SM深度解析与核心要点作为一名 AI Infra 工程师如果你只能深入理解一个 GPU 硬件概念那一定是流多处理器Streaming Multiprocessor, SM。它是 GPU 的心脏和基本计算单元决定了 GPU 的并行能力上限也是所有 AI 训练和推理性能优化的最终落脚点。不理解 SM你就无法真正解释为什么同样的 FLOPS 不同 GPU 实际性能差异巨大为什么有些算子跑不满 GPU为什么混合精度训练能带来数倍加速更不用说进行底层的 kernel 优化和大模型性能调优了。一、从宏观到微观GPU 架构的层级结构在深入 SM 之前我们先建立一个清晰的 GPU 整体架构认知。现代 GPU 采用严格的分层设计从大到小依次是GPU 芯片 ├── 图形处理集群GPC │ ├── 纹理处理集群TPC │ │ └── 流多处理器SM← 我们今天的主角 │ │ ├── 计算核心CUDA Core/Tensor Core │ │ ├── 调度单元Warp Scheduler │ │ └── 存储单元寄存器/共享内存/L1缓存 ├── L2 缓存 └── HBM 显存控制器核心认知GPU 不是一个单一的处理器而是由数十到上百个独立的 SM 组成的计算集群。每个 SM 都是一个功能完备的迷你处理器拥有自己的计算、调度和存储资源能够独立执行线程块如下图所示。以当前主流的数据中心 GPU 为例NVIDIA A100108 个 SMNVIDIA H100144 个 SMNVIDIA B100160 个 SMSM 数量直接决定了 GPU 的理论峰值算力。例如H100 的 FP16 峰值算力 144 SM × 4 Tensor Core/SM × 256 FMA/周期 × 1.83 GHz ≈ 335 TFLOPS。二、SM 的解剖学内部组件详解一个现代的 SM以 Hopper H100 为例是一个高度复杂的单元集成了执行计算、调度和存储所需的一切。根据下图我们可以将其分为三大核心模块2.1 执行核心真正干活的劳动者这是 SM 内部执行数学运算的硬件单元也是 AI 算力的直接来源。核心类型主要功能AI 工作负载中的作用FP32 CUDA Core32位单精度浮点运算传统科学计算、部分算子的通用计算INT32 Core32位整数运算地址计算、循环计数、量化推理FP64 Core64位双精度浮点运算高精度科学计算AI 中很少使用Tensor Core硬件化矩阵乘加GEMMAI 训练和推理的绝对主力SFU特殊功能单元超越函数sin/cos/exp等激活函数计算关键区别CUDA Core 一次只能执行一个标量运算a×bc而 Tensor Core 一次能执行一个完整的矩阵乘加运算DA×BC。对于 AI 中无处不在的矩阵乘法Tensor Core 能提供比 CUDA Core 高 10-20 倍的性能。2.2 调度单元让核心不闲着的管理者SM 的高效运行离不开强大的调度系统。现代 SM 通常包含多个 Warp 调度器和分发单元Warp 调度器负责管理和调度 Warp32 个线程的组的执行分发单元将指令分发给对应的计算核心指令缓存存储 SM 要执行的指令核心机制延迟隐藏。当一个 Warp 因为等待数据从显存返回而暂停时Warp 调度器不会等待而是立即切换到另一个准备就绪的 Warp 执行。这种硬件级的线程切换几乎没有开销是 GPU 实现高吞吐量的关键。2.3 存储单元靠近计算的数据仓库SM 内部集成了多级高速存储以减少对外部慢速显存的访问。速度从快到慢依次是寄存器文件GPU 上最快的存储每个 SM 拥有巨大的寄存器文件H100 每个 SM 有 256 KB。寄存器被动态分配给活跃线程用于存放临时变量。共享内存程序员可控的片上存储线程块内的所有线程可以共享访问。H100 每个 SM 最多可配置 228 KB 共享内存。L1 缓存自动管理的高速缓存用于缓存频繁访问的数据和指令。重要比例在 AI 工作负载中内存访问往往是性能瓶颈而不是计算。因此如何高效利用 SM 内部的高速存储是性能优化的核心。三、SM 的核心工作原理SIMT 执行模型GPU 采用单指令多线程(Single Instruction, Multiple Threads, SIMT)执行模型这是它与 CPU 最根本的区别。3.1 什么是 SIMT比喻想象一个工厂车间SM里面有 32 个工人CUDA Core。车间主任Warp 调度器喊一声把手上两个数相乘32 个工人同时执行这同一条指令但每个人算不同的数。核心特点一条指令同时驱动 32 个线程一个 Warp所有线程必须步调一致执行相同的指令如果线程出现分支if-else不同分支的线程会被串行执行效率暴跌3.2 线程的层级结构CUDA 编程模型将线程组织成三级结构Grid一个 Kernel 启动的所有线程的集合Block线程块Grid 被划分为多个线程块每个线程块被分配到一个 SM 上执行Warp线程块被进一步划分为多个 Warp每个 Warp 包含 32 个线程是 SM 调度的基本单位关键规则一个线程块一旦被分配到某个 SM就会一直在该 SM 上执行直到完成一个 SM 可以同时驻留多个线程块H100 每个 SM 最多可驻留 32 个线程块一个 SM 可以同时管理数千个线程但同一时刻只有少数几个 Warp 在执行3.3 延迟隐藏的工作过程Warp A 执行一条加载指令需要从全局显存获取数据延迟约 400-800 个时钟周期Warp 调度器立即切换到 Warp B执行它的指令当 Warp B 也遇到长延迟操作时再切换到 Warp C当 Warp A 的数据到达时它重新进入就绪队列等待调度结论GPU 通过用并行性换延迟的方式实现高吞吐量。要让 GPU 跑满必须提供足够多的并行线程来隐藏各种延迟。四、Tensor CoreAI 时代 SM 的心脏如果说 SM 是 GPU 的心脏那么 Tensor Core 就是 SM 的心脏。自 Volta 架构引入以来Tensor Core 已经成为 AI 算力的绝对主导者。4.1 Tensor Core 是什么Tensor Core 是一种硬件化的矩阵乘加MMA单元。它不是执行单一的加法或乘法而是一次性完成一个完整的矩阵乘法运算。基本操作D A × B CA 和 B 是输入矩阵C 是累加矩阵D 是输出矩阵4.2 Tensor Core 的性能优势以 H100 的第四代 Tensor Core 为例每个 Tensor Core 每周期可执行 256 个 FP16 FMA 运算每个 SM 有 4 个 Tensor Core每个 SM 每周期可执行 1024 个 FP16 FMA 运算相比之下每个 SM 只有 128 个 FP32 CUDA Core每周期只能执行 128 个 FMA 运算8 倍的理论性能差距这就是为什么混合精度训练能带来数倍加速的根本原因——它能充分利用 Tensor Core。4.3 Tensor Core 支持的精度格式随着架构演进Tensor Core 支持的精度格式越来越丰富专门针对 AI 工作负载优化架构支持的精度格式典型应用VoltaFP16早期深度学习训练AmpereFP16, BF16, TF32, INT8主流训练和推理HopperFP16, BF16, TF32, FP8, INT8, INT4大模型训练和高吞吐推理BlackwellFP16, BF16, TF32, FP8, NVFP4, INT4极致推理性能NVFP4Blackwell 架构引入的全新 4 位浮点格式结合双级缩放机制在保持精度的同时将推理吞吐量再提升一倍。五、SM 架构演进从 Ampere 到 BlackwellNVIDIA 每一代 GPU 架构都会对 SM 进行重大改进以更好地适应 AI 工作负载的需求。5.1 AmpereA100AI 架构的里程碑首次引入 TF32 精度在保持 FP32 精度的同时利用 Tensor Core 加速支持结构化稀疏进一步提升 Tensor Core 性能引入异步内存拷贝减少数据搬运开销每个 SM64 个 FP32 Core4 个第三代 Tensor Core256 KB 寄存器文件164 KB L1/共享内存5.2 HopperH100Transformer 优化第四代 Tensor Core支持 FP8 精度Transformer 引擎线程块集群Thread Block Cluster允许 SM 之间直接访问共享内存分布式共享内存DSMEM提升 SM 间通信效率每个 SM128 个 FP32 Core4 个第四代 Tensor Core256 KB 寄存器文件228 KB L1/共享内存5.3 BlackwellB100推理性能的飞跃第五代 Tensor Core支持 NVFP4 精度第二代 Transformer 引擎双线程块 MMA成对的 SM 协同工作共享操作数每个 SM 配备 256 KB Tensor 内存TMEM专门为 Tensor Core 提供数据统一 INT32/FP32 流水线提高资源利用率每个 SM128 个统一 INT32/FP32 Core4 个第五代 Tensor Core256 KB 寄存器文件256 KB TMEM演进趋势越来越多的硅片面积被分配给 Tensor Core 和专用 AI 加速单元通用计算单元的比例逐渐下降。这反映了 GPU 从通用并行处理器向 AI 专用处理器的转变。六、AI Infra 工程师必须掌握的 SM 相关性能优化要点理解 SM 架构的最终目的是为了优化 AI 工作负载的性能。以下是每个 AI Infra 工程师都应该掌握的核心优化原则6.1 充分利用 Tensor Core使用混合精度训练FP16/BF16 训练能充分利用 Tensor Core带来 2-4 倍的性能提升使用 FP8 训练H100 及以上 GPU 支持 FP8 训练可进一步提升 2 倍性能确保矩阵维度对齐Tensor Core 对矩阵维度有特定要求如 16 的倍数对齐后才能获得最佳性能使用优化的 BLAS 库cuBLAS、CUTLASS 等库已经针对 Tensor Core 做了深度优化6.2 提高 SM 占用率SM 占用率是指 SM 上实际驻留的 Warp 数与最大可驻留 Warp 数的比值。高占用率是隐藏延迟、提高吞吐量的关键。影响占用率的因素每个线程使用的寄存器数量每个线程块使用的共享内存数量每个线程块的线程数优化方法减少每个线程的寄存器使用量合理设置线程块大小通常 128、256 或 512 个线程避免使用过多的共享内存6.3 优化内存访问模式合并内存访问让同一个 Warp 内的线程访问连续的内存地址这样可以合并成一个内存事务利用共享内存将频繁访问的数据加载到共享内存中减少对全局显存的访问避免分支发散尽量让同一个 Warp 内的线程执行相同的代码路径使用异步内存拷贝Ampere 及以上架构支持全局内存直接到共享内存的异步拷贝减少寄存器使用和延迟6.4 合理分配工作负载确保足够的并行性启动的线程块数量应该至少是 SM 数量的 4 倍这样才能让所有 SM 都忙碌起来负载均衡尽量让每个线程块的工作量相同避免出现木桶效应避免过小的 KernelKernel 启动有一定的开销过小的 Kernel 会导致开销占比过高七、常见误区与最佳实践误区 1FLOPS 越高实际性能越好真相理论 FLOPS 只是一个上限实际性能取决于能否有效利用这些 FLOPS。很多时候内存带宽才是真正的瓶颈。最佳实践计算算法的算术强度计算量/内存访问量与 GPU 的运算强度FLOPS/带宽进行比较判断是计算受限还是内存受限。误区 2线程越多性能越好真相过多的线程会导致寄存器和共享内存不足反而降低 SM 占用率和性能。最佳实践通过实验找到最佳的线程块大小和网格大小通常在 128-512 个线程/块之间。误区 3所有算子都应该用 Tensor Core 加速真相Tensor Core 只擅长矩阵乘法对于其他类型的算子如逐元素操作、规约使用 CUDA Core 可能更高效。最佳实践根据算子的计算特性选择合适的加速单元不要盲目追求 Tensor Core 利用率。八、总结与学习建议SM 是 GPU 架构的核心也是 AI Infra 工程师必须深入理解的概念。它的设计哲学——“用并行性换延迟”、“专用硬件加速特定工作负载”——贯穿了整个 GPU 的发展历程。核心要点回顾SM 是 GPU 的基本计算单元GPU 的整体性能主要取决于 SM 的数量和每个 SM 的计算能力SM 采用 SIMT 执行模型以 Warp32 个线程为基本调度单位Tensor Core 是 AI 算力的核心能提供比 CUDA Core 高 10-20 倍的矩阵运算性能性能优化的关键是充分利用 Tensor Core、提高 SM 占用率、优化内存访问模式学习建议动手写几个简单的 CUDA Kernel观察不同线程块大小和内存访问模式对性能的影响使用 NVIDIA Nsight 工具分析 Kernel 的执行情况查看 SM 占用率、Tensor Core 利用率等指标阅读 cuBLAS、CUTLASS 等优化库的源码学习它们是如何充分利用 SM 资源的关注 NVIDIA 每一代新架构的技术白皮书了解 SM 架构的最新演进理解 SM 只是 AI Infra 学习的起点但它是最重要的起点。只有深入理解了硬件底层你才能写出真正高效的 AI 系统在大模型时代发挥出 GPU 的全部潜力。附录SM流式多处理器全模块拆解解析安培架构这张是NVIDIA第二代光追第三代Tensor Core架构SMAmpere安培架构SM整个SM由4组子执行簇共享L1/纹理/RT单元构成逐块拆分各模块功能一、橙色模块L0 I-Cache Warp Scheduler Dispatch每组子单元顶部橙色栏4套1. L0 I-Cache零级指令缓存功能存储当前活跃Warp32线程为1个Warp的机器指令从L2缓存预取指令给Warp调度器快速喂指令减少指令取指延迟是指令流水线最前端的缓存。2. Warp SchedulerWarp调度器CUDA最小调度单位是Warp32线程调度器负责从就绪Warp队列挑选符合条件的Warp根据指令类型算数/访存/特殊函数分发到对应运算单元标注32 thread/clk单周期最多调度分发32个线程1个完整Warp。3. Dispatch指令派发单元把调度器选定的指令路由发送到下方FP32/INT32、LD/ST、SFU、Tensor Core等不同执行流水线完成指令分发。二、深蓝色块Register File (16384 × 32-bit4组独立寄存器堆)CUDA通用寄存器堆16384×32bit单块寄存器总容量16384个32位通用寄存器功能每个线程的局部变量、中间运算结果全部存在通用寄存器中是GPU线程的高速片上寄存器Warp执行时从寄存器读源操作数、写入运算结果寄存器是CUDA性能关键资源寄存器占用量直接限制单个SM能并发的线程数量。整SM共4份寄存器堆每份独立供给下方1组FP/Tensor运算簇。三、绿色运算阵列每组子单元分三块2×FP32/INT32 1×Tensor Core共4组1. FP32 / INT32 算数核心两大片绿色通用ALU阵列FP32单精度浮点运算单元32位浮点数图形光栅化、通用科学计算、CUDA基础浮点运算INT3232位整数运算单元地址计算、逻辑运算、整型算法、分支判断安培架构该单元FP32和INT32硬件同核分时复用同一套ALU可以跑浮点/整数指令是SM最通用的计算资源承担绝大部分通用图形、CUDA内核计算。2. TENSOR CORE 3rd Gen第三代张量核心右侧整块深绿AI专用加速硬件第三代Tensor Core支持FP16/BF16/TF32/INT8/INT4混合精度矩阵乘加GEMM用途深度学习推理/训练、AI超分辨率、DLSS超采样、神经网络卷积加速专门吃掉矩阵运算AI算力主力硬件内部集成矩阵乘法器累加器单周期完成大批量矩阵运算大幅降低通用FP32单元负载。四、暗红色底层单元LD/ST SFU每组运算阵列最下方红块1. LD/STLoad/Store 载入/存储单元4个一组片上数据访存单元负责线程从Shared Memory/L1/全局内存读数据Load、把运算结果写回内存Store所有需要读写显存/共享内存的指令都走LDST流水线是数据通路分离「计算」和「访存」流水线避免占用FP32算力。2. SFUSpecial Function Unit 特殊函数单元最右侧小红块特殊数学函数专用硬件计算sin/cos/log/sqrt/exp/倒数等超越数学函数不占用FP32通用核心资源单独硬件加速复杂数学运算图形纹理采样、物理计算高频用到。五、跨4个子簇的横向公共模块SM下半部分横向长条1. 128KB L1 Data Cache / Shared Memory蓝绿色长条全SM共享L1数据缓存 CUDA共享内存物理同一块片上存储逻辑分区Shared Memory共享内存CUDA同一个Block内所有线程高速互通数据片上极低延迟程序员可手动分配大小是CUDA并行优化核心L1 Data Cache自动缓存全局内存读写数据对图形管线、不可控访存做硬件缓存安培架构SM统一128KB物理存储可配置划分L1缓存/Shared Memory占比。2. TexTexture Unit 纹理单元4个并列蓝色块图形纹理采样硬件负责纹理贴图寻址、双线性/三线性纹理过滤、各向异性过滤除光栅化纹理读取外CUDA也可以用纹理缓存做带硬件插值的只读数据寻址。六、最下方黄色大块RT CORE 2nd Generation第二代光线追踪核心硬件光追专用加速单元整SM共用核心功能光线与包围盒(AABB)/三角形求交测试光追中最耗时的BVH遍历、相交计算硬件加速用途实时光线追踪光栅化光线追踪混合渲染RTX实时光影、反射折射、全局光照第二代RT Core优化了BVH遍历效率支持运动模糊几何体相交加速。整体架构总结1个SM 4个独立执行子块每子块调度寄存器FPTensorLDSTSFU 全SM共享L1/Shared纹理单元RT光追单元GPU由数十~上百个SM阵列组成SM是NVIDIA GPU算力的最小组成单元。