GPU 计算执行栈

GPU 计算执行栈描述一个高层算子如何从 CPU 侧框架进入 GPU 并完成计算。它连接软件图优化、Runtime、内核驱动、命令队列、GPU 前端、调度器和执行单元,是理解 AI 性能瓶颈与算子优化的共同地图。

端到端路径

算子/计算图
  → 图编译器与 Runtime(选择/生成 kernel,准备依赖与参数)
  → 驱动(显存、地址空间、队列和命令描述符)
  → Ring Buffer / Doorbell(提交并通知)
  → Command Processor / DMA(解析命令与搬运数据)
  → Block / Warp / SM 调度
  → Fetch / Decode / Dispatch / Scoreboard
  → ALU / SFU / LSU / Tensor Core
  → 写回显存与同步

三个关键边界

编译器 vs Runtime

编译器负责图重写、算子融合、布局选择和 kernel 生成;Runtime 负责具体执行时的参数、依赖、流与提交。两者边界会因框架和编译模式变化。

Runtime vs 驱动

驱动提供资源管理和快速提交接口:控制面常通过 ioctl 管理显存/上下文/队列,数据面可用 mmap 暴露 Doorbell 页面,减少每次提交的系统调用开销。

命令 vs 代码

命令描述符通常不携带完整 kernel 源码,而是引用已加载到 GPU 地址空间的二进制,并附 grid/block、共享内存、参数和同步信息。

性能分析意义

  • CPU 提交或同步慢:看 Runtime、驱动、队列与过细 kernel。
  • 数据搬运慢:看 DMA、显存布局、PCIe/NVLink 与重叠执行。
  • GPU 利用率低:看占用率、依赖、分支、访存与调度。
  • 算子多且碎:优先看图融合、Kernel Fusion 与批处理。

架构差异:CUDA/PTX/SASS 与 SM/Warp 是 NVIDIA 语境;其他 GPU/加速器采用不同命名和实现。本文提供跨层心智模型,不是某一代芯片的官方微架构说明。

来源