用途:为 CuTile 内核添加自动调优代码,确定搜索维度、设计搜索空间、实现并校验性能。触发信号包括 exhaustive_search、replace_hints、hints_fn 等。
主要能力:
- 决策树分类内核:计算密集(matmul/GEMM/FMHA)做完整 tile 搜索;均衡与访存密集内核仅做 occupancy 搜索。
- 按内核类型(T1 逐元素、T2 原地、T3 matmul、T4 persistent、T5 FMHA、T6 FP8、T7 grouped GEMM、T8 varlen attention、T9 dual-GEMM)套用模板。
- 使用 exhaustive_search + 缓存 + ct.launch 的 tune-once/cache/launch 模式,首次调用调优后零开销直接启动。
- 就地(in-place)内核用 split-buffer 模式;校验需在开启 autotune 与 DISABLE_AUTOTUNE=1 两种情况下分别运行,并与固定最优配置做 A/B 基准对比。
使用方式要点:
- 搜索空间须包含原始固定配置;exhaustive_search 需要 Sequence,生成器要用 list() 转换。
- 最终代码建议 ≤30 个配置,收敛后目标每架构 ≤8 个,以降低 CuTile 较重(约 0.5–1s/配置)的编译成本。
- 缓存需同时保存 config 与 tuned kernel 对象,避免在热路径调用 replace_hints 导致重编译(约慢 100–500 倍)。sm100+ 上 FMHA/matmul/varlen 搜索空间须同时含 num_ctas=1 与 2。
- 均值加速比在 0.98–1.02 视为噪声区间;若已覆盖模板推荐维度可停止,GPU 时序本身有 ±5–10% 波动。
范围与限制:仅涉及调优配置(搜索空间生成函数、exhaustive_search 调用与结果处理、replace_hints、缓存逻辑、ct.launch、DISABLE_AUTOTUNE 回退路径),不修改内核代码,不含数学标志、性能提示、访存模式、代码生成与算法改动。与 Triton 不同,CuTile 无 num_warps/num_stages,缓存由用户自行在内存中管理,且 args_fn 与 hints_fn 分离。具体 API 签名、参数空间细节与各内核示例以参考资料为准。