【infra之路】GPU 执行与存储层次全景关系图

复制代码
┌─────────────────────────────────────────────────────────────────────┐
│                        GRID (Kernel Launch)                         │
│  ┌──────────────────┐ ┌──────────────────┐       ┌──────────────┐  │
│  │   BLOCK (0,0)    │ │   BLOCK (1,0)    │ ...   │ BLOCK (n,m)  │  │
│  │                  │ │                  │       │              │  │
│  │ ┌──────────────┐ │ │ ┌──────────────┐ │       │              │  │
│  │ │  WARP 0      │ │ │ │  WARP 0      │ │       │              │  │
│  │ │ T0 T1 ...T31 │ │ │ │ T0 T1 ...T31 │ │       │              │  │
│  │ ├──────────────┤ │ │ ├──────────────┤ │       │              │  │
│  │ │  WARP 1      │ │ │ │  WARP 1      │ │       │              │  │
│  │ │ T32 T33...T63│ │ │ │ T32 T33...T63│ │       │              │  │
│  │ ├──────────────┤ │ │ ├──────────────┤ │       │              │  │
│  │ │  ...         │ │ │ │  ...         │ │       │              │  │
│  │ └──────────────┘ │ │ └──────────────┘ │       │              │  │
│  │                  │ │                  │       │              │  │
│  │ ╔══════════════╗ │ │ ╔══════════════╗ │       │              │  │
│  │ ║ SHARED MEM   ║ │ │ ║ SHARED MEM   ║ │       │              │  │
│  │ ║ (per Block)  ║ │ │ ║ (per Block)  ║ │       │              │  │
│  │ ╚══════════════╝ │ │ ╚══════════════╝ │       │              │  │
│  └──────────────────┘ └──────────────────┘       └──────────────┘  │
└─────────────────────────────────────────────────────────────────────┘
          │ mapped to                    │ mapped to
          ▼                              ▼
┌─────────────────────────────────────────────────────────────────────┐
│                     PHYSICAL HARDWARE (SM)                          │
│                                                                     │
│  ┌─────────────────────────────────────────────────────────────┐   │
│  │                    WARP SCHEDULER                           │   │
│  │  selects ready warp → issues instruction every cycle        │   │
│  └──────────────────────────┬──────────────────────────────────┘   │
│                             │                                      │
│              ┌──────────────┼──────────────┐                       │
│              ▼              ▼              ▼                       │
│  ┌───────────────┐ ┌───────────────┐ ┌───────────────┐            │
│  │  REG FILE     │ │  L1 / SMEM    │ │  LD/ST UNIT   │            │
│  │  (per Thread) │ │  (per SM)     │ │  → L2 → HBM   │            │
│  │  64K × 32bit │ │               │ │               │            │
│  └───────────────┘ │ ┌───────────┐ │ └───────────────┘            │
│                    │ │ L1 CACHE  │ │                               │
│                    │ │ 128B Line │ │                               │
│                    │ │(Warp-gran.)│ │                               │
│                    │ ├───────────┤ │                               │
│                    │ │SHARED MEM │ │                               │
│                    │ │ 32 Banks  │ │                               │
│                    │ │ × 4B each │ │                               │
│                    │ │(Bank Conf!)│ │                               │
│                    │ └───────────┘ │                               │
│                    └───────────────┘                               │
└─────────────────────────────────────────────────────────────────────┘

五层抽象的归属与边界

复制代码
软件抽象层(程序员可见)          硬件实现层(对程序员透明)
━━━━━━━━━━━━━━━━━━━━━          ━━━━━━━━━━━━━━━━━━━━━━━━
Grid    ──────────────────→     整个 GPU(所有 SM)
Block   ──────────────────→     单个 SM(一个 Block 不跨 SM)
Thread  ──────────────────→     寄存器 + ALU 时间片
Warp    ──────────────────→     调度器最小发射单元(32 Threads 锁步)
Shared Memory ───────────→     SM 内 32-Bank SRAM
L1 Cache ────────────────→     SM 内 128B-Line SRAM(与 SMEM 物理共享)
L2 Cache ────────────────→     全芯片共享,32B Sector
HBM     ─────────────────→     片外 DRAM Stack

关键关系速查表

关系 说明
Grid → Block Grid 是 Block 的二维/三维数组;Block 间无序、无同步(除 Cooperative Groups)
Block → Warp Block 内线程按创建顺序每 32 个编为一个 Warp;Warp 是实际调度单位
Warp → Thread Warp 内 32 线程SIMT 锁步执行;分支发散时串行化 mask 切换
Block → Shared Mem 每个 Block 独占一块 SMEM;Block 结束后 SMEM 内容失效
Warp → L1 L1 line = 128B = 一个 Warp 的完美合并请求大小
Warp → Bank 32 threads ↔ 32 banks;同周期同 bank 不同地址 → conflict
Thread → Register 每个 Thread 有独立寄存器文件;跨 Thread 通信必须经 SMEM/L1
L1/SMEM → L2 → HBM 逐级容量增大、延迟增大、粒度变化;Memory Controller 做粒度适配

最容易混淆的三个边界

  1. Warp ≠ Block

    Block 是资源分配单位(SMEM、barrier),Warp 是执行单位。一个 Block 可能有 8 个 Warp,但同一时刻只有部分 Warp 在发射指令。

  2. L1 ≠ Shared Memory

    物理上共用同一块 SRAM,可配置比例(如 64KB/64KB),但逻辑上完全独立:L1 是自动管理的 cache(128B line),SMEM 是显式管理的 scratchpad(32-bank)。Bank conflict 只影响 SMEM,不影响 L1。

  3. Thread 不是并行单位

    硬件从不单独调度一个 Thread。所有资源分配、指令发射、内存访问都以 Warp(32T) 为原子单位。"Thread" 只是编程模型中的索引抽象。


一句话总结

Grid/Block/Thread 是程序员的组织抽象,Warp/Bank/SMEM/L1 是硬件的执行现实。前者决定"数据怎么分",后者决定"数据怎么跑"。性能优化的本质,就是让前者的划分方式恰好对齐后者的物理约束------Warp 对齐 32,SMEM 对齐 32-bank,L1 对齐 128B,L2 对齐 32B sector,HBM 对齐 burst size。

相关推荐
m0_734571763 小时前
深入理解人工智能 chatGPT的软件架构
人工智能
飞塔老梅子3 小时前
09. Codex 节省Token ❀ 老梅子学AI
人工智能·ai·token·模型·codex
HyperAI超神经3 小时前
扰动实验+迁移学习,MIT团队推出IRIS,用「指纹」重建单细胞信号传导历史
人工智能·深度学习·机器学习·迁移学习
前沿在线3 小时前
启元机器人亮相外滩大会,探索个人机器人健康服务新场景
人工智能·ai·大模型
haishikeji696_3 小时前
现成无人机管理系统源码|支持私有化部署、二次开发、政企投标、自动机库对接
人工智能·无人机·低空经济·无人机管理系统·飞控管理系统
汇智信科3 小时前
煤矿视频智能分析系统:基于 AI 视觉实现井下安全隐患实时监测与闭环管控
人工智能
h78813943 小时前
录音容易纪要难?录音转文字 + AI 纪要实测,提升会议效率
人工智能·powerpoint
涛思数据(TDengine)3 小时前
从“极速算“到“知识沉淀“:工业 AI 实战直播(十三、十四期)
人工智能·时序数据库·tdengine·工业互联网·工业ai
Summer-Bright3 小时前
深度 | OpenAI 联合三星造芯:从模型层向底层算力延伸,AI 算力供应链开始重新洗牌
人工智能·ai·openai·芯片