
8 月 6 日,2026 夏季 InfiniTensor 训练营Triton & 九齿方向第五课《九齿三重:天通》开讲。
前置课程《九齿二重:渐悟》带领大家通过“动手写代码”的方式掌握九齿,深入理解九齿作为张量级 DSL 的核心设计理念,并通过向量加法与矩阵归约两个案例,讲解“排布”与“应用”编程范式。
本节课作为九齿系列的最后一课,将跳出语法层面,深入探讨 DSL 在工业界的核心价值、性能评估方法论以及高阶可视化工具的使用,帮助大家从“会写代码”到“写好高性能算子”。
Triton 和九齿的用途
概念辨析
1. 计算内核 (Kernel):纯粹的计算函数,只负责输入数据指针/Shape/Stride 到输出数据的运算,不涉及资源管理。

2. 算子 (Operator):包含 Kernel + 资源分配 + 数据存储管理的完整封装(如 Class 成员变量)。
DSL 的两大核心用途
1. 现有算子性能优化(算子融合):
- 痛点:在 eager execution 模式下,多个连续操作通常对应多个 Kernel,中间 Tensor 需要频繁读写 GPU Global Memory,增加访存开销。
- 方案:通过 DSL 将多个子运算融合为一个 Kernel,减少中间数据的读写开销。
2. 新算子/新模型的概念验证 (PoC):
- 痛点:直接使用 CUDA 开发周期长,易陷入“提前优化”陷阱。
- 方案:利用 DSL 的高开发效率快速实现 Demo,验证算法有效性后再考虑极致优化(案例:FlashAttention 系列通过重新设计 Attention 计算流程,将多个计算阶段融合,并利用 Tile 化和 IO-aware 优化降低显存访问)。
性能评估:Roofline Model 与 Benchmark
Roofline Model 详解

1. 横轴 (Arithmetic Intensity):计算强度(FLOPS/Byte)。
2. 纵轴 (Attainable Performance):可达性能(FLOPS/s)。
3.关键指标:π(峰值算力)、β(带宽)。
算子瓶颈分类
1. Memory-Bound(访存密集型):位于 Roofline 左侧斜坡区,受限于带宽。优化方向:减少数据搬运、提升缓存命中率。
2. Compute-Bound(计算密集型):位于 Roofline 右侧平台区,受限于峰值算力。优化方向:指令级并行、数学变换。
注意:同一算子在不同 Shape 下可能处于不同区域(如窄矩阵乘可能是 Memory Bound)。
Benchmark 实战
1.使用 triton.testing.do_bench 进行计时。

2.TFLOPS 计算公式推导:
- 以矩阵乘为例,$2 imes M imes N imes K$ 的来源解析(每个输出元素对应 K 次乘加)。

实战案例:RMSNorm 算子融合与性能提升
PyTorch 原生实现的局限
1.由多个原子操作拼接而成。

2.多个独立 Kernel 之间需要通过 Global Memory 传递中间结果,无法在不同计算阶段之间持续利用寄存器或 Shared Memory 保存中间数据。
九齿融合实现
1.利用 Tile 排布与 Application 组合,将所有计算逻辑封装进单一 Kernel。

2.消除中间数据的显存搬运开销。
性能收益数据
1. Kernel 级别:九齿耗时仅为 PyTorch 原生的 43.85%。
2. 端到端推理:在 Llama 推理场景(Input=32, Output=128)下,Token/s 从 26.71 提升至 27.65,整体吞吐提升 3.5%。
3. 启示:局部算子的极致优化对系统级性能有显著累积效应。
九齿可视化工具
1. Add 算子:
- 验证简单的 Input/Other/Output 一一映射关系;切换 Program ID 观察数据块移动。

2. MM 算子:
- 利用
target_subscript观察 for-loop 迭代过程中 A/B 矩阵块的变化。 - 验证累加器 C 的生成过程(行块 × 列块 → 部分积累加)。

3. Conv2d 算子:
- 处理高维数据降维可视化(Source Subscript 切片)。

4. SDPA (Flash Attention):

九齿相关资源

加入训练营
📺完整课程内容,请观看直播或查看课程回放:
InfiniTensor 官网: https://www.infinitensor.com
B站直播: InfiniTensor 官方直播间
视频号直播: InfiniTensor 视频号预约
答疑交流: 训练营官方社群⬇️

关注与交流

