学习资料
InfiniTensor 冬季训练营 Triton&九齿第五课《天数智芯 Triton 实战》
发表于:

2026 年 1 月 27 日,2025 冬季 InfiniTensor 大模型与人工智能系统训练营 Triton&九齿系列第五课《天数智芯 Triton 实战》开讲。

本节课主讲从 CUDA 兼容到性能优化,天数智芯如何让 Triton 在国产 GPU 上高效运行。

天数智芯与 Triton 的适配优势

1. LLVM生态兼容

  • 天数智芯的自研软件栈编译器基于 LLVM 开发,而 Triton 本身也依赖 MLIR 和LLVM等基础设施。这意味着 Triton 的工具链优化流程能与天数智芯编译器无缝对接,无需额外翻译。

2. GPGPU 架构契合

  • 天数智芯 GPU 采用 GPGPU 架构,与 Triton 最初支持的 NVIDIA GPU、AMD GPU 架构相似,内存模型相似、计算模型一致,因此 Triton 中针对 GPGPU 的中间表示优化手段可直接复用

3. Triton Kernels 零改写复用

  • 这是对开发者最友好的优势,无需修改代码,Triton 经验可直接迁移。如需进一步提升性能,可针对特定 kernel 进行优化

天数智芯 Triton 适配

1. Triton 架构分层

  • Kernel 层:用户编写或自动生成的算子
  • 编译器层:对 kernel 进行基础优化和GPU专用优化
  • LLVM 与硬件后端层:将 Triton GPU IR 转换为硬件指令

2. 适配工作的三个层面

天数智芯 Flash Attention 算子优化

  • V0版本:官方实现支持
  • V1版本:head_dim 切分优化
  • V2版本:转置视图优化

Block Tiling

  • Grid划分:对 sequence length 维度按block m 切分
  • 任务分配:不同线程块并行处理不同的batch、head 和 sequence length 分段

V1版本 Block Tiling

1. V1版本 warps per tile

  • Warp 垂直排列:每个 warp 负责一个 16×128 的横条
  • 优势:
    • 减少跨 Warp 数据交换
    • 避免数据排布转换
    • 提升计算效率

2. MMA 指令

  • 线程负载计算

    • 矩阵 A 总元素量:$16 imes 16 = 256$ 个 FP16 元素。
    • Warp 分配:$256 div 32 ( ext{warp size}) = 8$。即每个线程寄存器需存储 8 个 FP16 元素
  • 寄存器片段布局 (Fragment Layout)
    -右侧图表展示了矩阵 A 在 Warp 内的物理映射。

  • 非连续分布:以 T0 (Thread 0) 为例(红框标记),它持有的 8 个元素 ($a0 sim a7$) 并非在矩阵中连续排列,而是分散映射。例如:

    • ${a0, a1}$位于 Row 0, Col 0-1。
    • ${a4, a5}$位于 Row 0, Col 8-9。
    • ${a2, a3}$位于 Row 8, Col 0-1。

  • 线程负载计算
    • 矩阵 c 总元素量:$16 imes 8 = 128$ 个 FP16 元素。
    • Warp 分配:$128 div 32 ( ext{warp size}) = 4$。即每个线程寄存器需存储 4 个 FP16 元素
  • 寄存器片段布局 (Fragment Layout)
    • 右侧图表展示了这 4 个元素在物理空间中的映射逻辑,以 T0 (Thread 0) 为例(红框标记)
    • 寄存器分配:包含两个 .f16x2 寄存器,分别存储 ${b0, b1}$ 和 ${b2, b3}$。
    • 空间映射 (Layout):${b0, b1}$:映射在矩阵的 Row 0, Col 0 位置。${b2, b3}$:映射在矩阵的 Row 8, Col 0 位置。
    • 布局特点:数据并非连续排列,而是存在 8 行的跨度 (Stride)。T0 虽然只负责第 0 列的数据,但被拆分到了矩阵的上半部分(Row 0)和下半部分(Row 8)。这种特定的 Swizzling 布局是为了配合 Tensor Core 在 K 维度上的高效数据读取与累加。

  • 线程负载计算
    • 矩阵 B 总元素量:$16 imes 8 = 128$ 个 FP32 元素。
    • Warp 分配:$128 div 32 ( ext{warp size}) = 4$。即每个线程寄存器需存储 4 个 FP32 元素
  • 物理映射
    • 空间分布:与矩阵 B 的布局高度一致。Thread 0 (红框) 持有的 ${c0, c1}$ 位于 Row 0, Col 0-1,而 ${c2, c3}$ 位于 Row 8, Col 0-1。
    • 意义:这种布局确保了计算结果可以直接作为下一次 MMA 运算的输入(Accumulator),或者通过简单的 Shuffle 操作存回 Shared Memory/Global Memory。

3. 天数 FP16 TCU 指令

4. 延时归约优化

  • 原流程:沿 k 遍历,每步分线程内归约、warp 内线程归约,与前步结果求和更新部分和,每步都做归约操作
  • 延时归约:去掉 warp 内归约,放到循环最后,中间计算结果更新为部分累加和(Partial Sum),循环结束后不同线程结果求和得最终正确结果,省去每步开销

V2 版本 Block Tiling

  • V2版本更快的原因
    • Reduce 方向改变:减少中间指令数量
    • 避免 MMA 结果在不同 Operand 表示之间的额外转换,降低数据重排与指令开销

总结

天数智芯通过深度适配Triton,为国产 GPU提供了高效的算子开发解决方案,使得开发者能够轻松将现有 Triton 代码迁移到天数智芯 GPU 上。随着更多算子的适配和优化,天数智芯 GPU 的生态将更加丰富,为国产 AI 芯片的发展提供强大支持。

2025冬季训练营课程表

💡 学习贴士

更多细节及完整课程内容,请观看直播或查看课程回放。

链接:https://www.infinitensor.com/camp/winter2025

📚 训练营报名持续进行中

扫码报名与加入群聊,或点击 「阅读原文」 直达官网报名