Skip to content

05. 成本模型与 Profiling ​

页面目标 ​

本页回答两个问题:如何从 shape、dtype 和资源约束生成候选配置,以及如何用 profiling 判断瓶颈是否真的被改善。Autotune 是搜索过程,profiling 是证据过程,二者不能互相替代。

Autotune 与 Profiling:从候选配置到条件化结论

成本模型的输入 ​

输入影响的决策需要保留的记录
shape / dtypetile、向量化和 Tensor Core 路径输入分布、对齐方式
数据复用shared memory、register 和 fusion读写次数、工作集
GPU 资源block、occupancy 和并发GPU 型号、编译目标
workload候选配置和最终结论batch、序列长度、重复次数

为什么最优解会随 backend 分化 ​

同一张图可以有多个语义等价的实现,但不同 backend 对 layout、Tensor Core 路径、编译缓存、launch 和 runtime 调度的成本假设不同。成本模型的目标不是宣布某个 backend “更快”,而是解释当前硬件与 workload 下为什么某个候选更合适。

分化来源需要固定的条件不能省略的记录
硬件资源GPU 架构、显存与 SM 资源设备型号、驱动、编译目标
backend 能力算子覆盖、图捕获、fallbackbackend 版本、实际执行路径
输入分布shape、dtype、layout 与动态范围bucket 规则、输入分布
编译与缓存首次编译、缓存命中与重编译compile time、cache key、冷/热运行

动态 Shape 需要单独记录。一个配置在固定 shape 上最优,不代表它适合其他 batch、序列长度或隐藏维度;autotune 还可能把编译时间、缓存命中和运行时间混在一起。

动态因素需要比较建议记录
Shape固定配置、shape bucket、按 shape 搜索shape 分布、bucket 规则
配置缓存首次编译与缓存命中后运行compile time、cache key
dtype不同输入 / 累加路径输入 dtype、累加 dtype
workload小 batch、长序列、混合请求各组独立结果,不只报平均值

Profiling 证据链 ​

先提出瓶颈假设,再用相同 workload 采集 kernel 时间、访存、occupancy、编译成本和端到端指标。一次 trace 只能描述当前配置;要形成结论,需要 baseline、候选、重复运行和失败条件。

现象可能原因下一步检查
kernel 快,端到端不快launch、同步或其他阶段占主导trace 与调用占比
memory throughput 低布局、复用或 tile 不合适load/store、cache、stride
occupancy 下降register / shared memory 压力spill、block 资源
不同 shape 波动大配置泛化不足shape 分桶、配置缓存和 autotune

本页出口 ​

你应能把一个 profiling 现象映射到可验证的优化动作,并说明为什么“某个 shape 上最快”不等于“所有 workload 上最优”。

统一记录至少包括:shape、dtype、block 配置、num warps、num stages、backend、显存上限、延迟上限、编译时间、重复运行结果和最终选择理由。算子优化路线中的 Task 5 负责成本模型与 Profiling,Task 6 把候选搜索接入端到端项目。

Released under the MIT License.