学习资料
2026 夏季 InfiniTensor 训练营 Triton & 九齿 4:《九齿二重:渐悟》

7 月 29 日,2026 夏季 InfiniTensor 训练营 Triton & 九齿方向第四课《九齿二重:渐悟》开讲。
前置课程《九齿一重:初窥》通过“排布-应用”范式,向量加法、GEMM、卷积及 Flash Attention 等实战案例详细讲解九齿。

本节课带领大家通过“动手写代码”的方式掌握九齿,深入理解九齿作为张量级 DSL 的核心设计理念,并通过向量加法与矩阵归约两个案例,彻底搞懂“排布(Arrangement)”与“应用(Application)”编程范式。

🛠️ 课前准备
推荐在 Google Colab 中运行 ninetoothed-puzzles.ipynb(GitHub 搜索 ninetoothed-puzzles 仓库),连接免费 GPU Runtime 即可开始实践。

九齿核心概念:符号张量与可视化

安装与环境配置

九齿仓库及可选工具(debugging, visualization)的安装

符号张量 vs 数值张量

  1. 九齿张量的本质:编译期符号化表示,非运行时数据存储
  2. 张量创建方式对比:指定 Shape vs 指定维度数(ndim)
  3. 为何需要 Tensor.eval()?——将符号转化为可视化的 numpy.ndarray

张量求值与替换机制

  1. eval():传入具体 shape 或 subs 字典,生成索引/数值视图
  2. subs():符号替换中间产物,保持九齿张量结构(支持嵌套)

元操作与嵌套张量

核心元操作:x.tile

  1. Tile 的作用:将单层张量拆分为多层嵌套结构
  2. 可视化:外层 Grid 形状 + 内层 Block 形状
  3. Dtype 的特殊性:九齿中 dtype 本身可以是张量

Flatten 操作

  • 对嵌套张量的特定层级进行展平
  • 结合 visualize 工具观察结构变化

符号化编程

  1. 自定义 Symbol 替代硬编码数值(如 block_size_m/n
  2. 可视化时的符号绑定:subs 字典需包含所有相关符号信息

九齿运行机制:自动推导执行配置

  1. Arrangement(排布)

    • 定义多张量的统一分块策略
    • 最外层对齐原则:编译器自动推导 Grid 启动配置
  2. 程序实例映射原理

    • 无需手动指定 <<<grid, block>>> 或 Triton grid lambda
    • 最外层形状决定 Program Instance 数量
    • 次外层张量自动映射到对应实例

  1. Application(应用)函数设计
    • 单实例视角编程:只关注当前分配到的 block/tile
    • 屏蔽指针运算:编译器自动处理内存访问偏移
    • 降低心智负担:排布与计算逻辑解耦

Kernel 构建与自动调优

  1. Kernel 组装要素
  • arrangement, application, tensors

  1. 自动调优(Auto-tuning)机制

  • Symbol 定义:meta=True 可被自动调优机制搜索
  • 调优约束参数:lower_bound, upper_bound, power_of_two
  • 便捷封装:ninetoothed.blocksize() 函数
  • 调用差异:自动调优模式下无需手动传递 block_size

进阶案例:多层 tile 与迭代归约

  1. 双层 tile 编程技巧
    • 适用场景:需要在 Application 内部进行迭代
    • 逆向思维:需要循环 → 考虑双层 tile
    • 三层嵌套张量的可视化与索引访问

  1. 行归约(Row Reduction)实现

    • 累加器模式设计
    • 硬件限制应对:Block Size 上限与分块累加必要性
    • Flash Attention 中的特殊假设 vs 通用算法实现
  2. 边界处理:Other 参数

    • 非整除场景下的 Mask 机制
    • 求和运算中 other=0 的语义正确性
    • 九齿自动处理 Offset/Mask,用户仅需指定填充值

加入训练营

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

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

B站直播: InfiniTensor 官方直播间

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

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

关注与交流