SM(Streaming Multiprocessor)是 GPU 的核心并行计算单元,GPU 是 SM 的集合,SM 是计算核心的集合。
核心定位
SM 是执行 SIMT 并行任务的最小独立单元:
- A100:108 个 SM
- RTX 4090:128 个 SM
- 每个 SM 独立调度执行一批线程
核心组成(Ampere 架构)
| 模块 | 作用 |
|---|---|
| CUDA Core | FP32/INT32 通用计算 |
| Tensor Core | 矩阵乘加(FP16/FP8/INT8) |
| FP64 Core | 高精度浮点运算 |
| Warp Scheduler | 调度 32 线程为一组的 Warp |
| Register File | 超低延迟高速存储 |
| Shared Memory | SM 内高速片上内存(TB/s 级) |
| L1 Cache | 临时数据缓存 |
工作原理
- 线程组织为 Block,每个 Block 分配到一个 SM
- Block 内线程拆分为 32 个一组的 Warp
- 同一 Warp 执行相同指令,处理不同数据(SIMT)
- Warp 阻塞时立即切换,隐藏延迟
关键:SM 并行能力由活跃 Warp 数决定,受寄存器/共享内存限制。
SM vs CPU Core
| 维度 | SM | CPU Core |
|---|---|---|
| 设计目标 | 大规模数据并行 | 复杂逻辑串行 |
| 核心数量 | 数十~上百 | 2~64 |
| 线程调度 | 硬件级无开销切换 | 操作系统调度 |
优化原则
让计算核心不空闲,最大化利用共享内存/寄存器降低访存延迟。
张芷铭的个人博客
Comments