学习资料
2026 夏季 InfiniTensor 训练营 Triton & 九齿 3:《九齿一重:初窥》

7 月 24 日,2026 夏季 InfiniTensor 训练营 Triton & 九齿方向第三课《九齿一重:初窥》开讲。
前置课程《Triton 练气术》系统讲解了 Triton 并行编程语言核心知识,涵盖 DSL 特性、与 CUDA 对比优势及 program_id、arange、load、store 四大基础 API 等内容。

本节课将带你深入理解九齿编程语言,它如何以 Triton 为编译后端,通过“排布+应用”的独特范式,屏蔽底层指针与内存细节,让并行编程初学者也能写出高可读、易维护的高性能 Kernel?从向量加法到 Flash Attention,我们将通过代码与算法的对应关系详细讲解九齿。

九齿是什么?

1.核心定义:一门提供张量级抽象的领域特定语言(DSL)。

2.使用 Triton 作为编译后端

  • 用户层:使用九齿 DSL 编写张量级代码。
  • 编译层:Code Generator 将九齿代码编译为 Triton 代码。
  • 后端层:复用 Triton 成熟的编译优化后端,避免重复造轮子。

3.对并行编程初学者友好

4.更强的代码可读性与可维护性

为什么需要九齿?

  • 九齿的定位:填补 PyTorch 与 Triton 之间的空白,剥离并行细节,让串行编程思维平滑过渡到并行开发。

直观对比:九齿 vs Triton

1.代码量对比:矩阵乘法案例中,九齿代码量显著少于Triton。

2.抽象层级对比

  • Triton:关注 Pointer、Stride、Offsets、Mask、显式 Load/Store。
  • 九齿:无指针概念,无显式内存访问;关注 Arrangement(排布)、Application(应用)、tile、expand 等张量操作。

向量加法(Hello World)

1.算法原理:

元素独立,天然适合并行;按 BlockSize 分块计算。

2.Triton 实现回顾:

Pid 获取、Offsets 计算、Mask 处理、Load/Add/Store。

3.九齿实现解析:

  • arrangement:使用 .tile() 将 A/B/C 按 BlockSize 切分并对齐。
  • application:直接对切分后的 Tile 组进行 C = A + B

4.张量可视化

矩阵乘法(GEMM)

1.并行算法回顾:

M/N/K 三维分块,C 的每个 Block 对应 A 的一行 Block 与 B 的一列 Block,累加小矩阵乘结果。

2.九齿排布技巧:

  • 双层 Tile:第一层切物理块,第二层组合逻辑行/列。
  • Expand:解决 A 的行 Block 与 C 的 Block 数量不对应问题,建立广播映射。
  • Squeeze:去除冗余维度,确保最外层形状一致以建立对应关系。

3.九齿实现:

初始化累加器,遍历对应好的 A/B Tile 组进行.dot()累加。

4.张量可视化:

二维卷积

1.im2col (Image-to-Column):

将卷积转换为隐式矩阵乘法以避免内存膨胀。

2.Implicit GEMM

3.九齿实现

  • 直接复用 GEMM 的 Arrangement 与 Application。
  • 仅需编写 Input/Filter/Output 到矩阵乘参数的转换逻辑。

4.张量可视化

  • 重叠Tile:使用 stride 参数处理滑动窗口重叠。
  • Ravel vs Flatten:九齿中 Ravel 用于展平嵌套张量层级,Flatten 用于展平单层张量维度。

Flash Attention-2

1.算法对标:严格对应论文 Algorithm 描述(Q/K/V分块、Online Softmax、累加更新)。

2.张量可视化

3.九齿实现

加入训练营

📺完整课程内容,请观看直播或查看课程回放:

InfiniTensor 官网https://www.infinitensor.com

B站直播: InfiniTensor 官方直播间

视频号直播: InfiniTensor 视频号预约

答疑交流: 训练营官方社群⬇️

关注与交流