
7 月 20 日,2026 夏季 InfiniTensor 训练营 Triton & 九齿方向第二课《Triton 编译器探索与寒武纪 MLU 实践》开讲。
前置课程《Triton 练气术》讲解了 Triton 并行编程语言核心知识,涵盖 DSL 特性、与 CUDA 对比优势及 program_id、arange、load、store 四大基础 API。
本节课将从硬件厂商视角出发,系统讲解 Triton 编程语言的核心价值,并深入解析寒武纪 Cambricon Triton 编译器的架构设计,重点拆解 Triton 到 Linalg 的转换方案及指针连续性分析等关键技术。
为什么使用 Triton?
多元芯片生态的痛点
- CUDA 生态垄断与国内厂商“各自为战”的困境
- 用户侧:多厂商语言切换成本高、学习曲线陡峭
- 产业侧:缺乏统一语言层,难以形成合力对抗 CUDA 生态
为何选择 Triton 作为“最大公约数”
1.生态拉通层面:芯片层与编译器后端无法统一,唯有厂商语言层可实现共建
2.技术特性层面:硬件无关的中间层表示(IR),屏蔽架构差异

3.开发体验对比:CUDA vs Triton
- CUDA:类单反相机,上限高下限低,需手动管理 Shared Memory/流水/Barriers
- Triton:类智能相机,下限高上限适中,编译器托管片上内存与指令融合

Triton 的四大核心优势
- 快速高效:高效支持上层 AI 框架(PyTorch 等)
- 易于上手:类 Python 语法,低学习成本
- 生态兼容性强:减少对单一生态依赖
- 适配度高:原生支持 Torch Compile / Inductor 路径
Cambricon Triton 编译器
Cambricon Triton 定位与特点
- 基于 Triton 语言适配寒武纪 MLU(DSA 架构)
- 最大程度复用 Triton 开发生态,性能接近手写算子

版本现状(v2.1 / 基于原生 Triton 3.4)
- 支持 JIT / AOT 编译模式
- 全量支持 Triton 官方原语及后端无关特性(Auto-tune, Interpreter 等)
num_warps参数重定义:映射 IPU 任务类型(Block 任务 / U1-U4 Cluster 任务)- 解除 Block Size 必须为 2 的幂次限制

编译器架构与 Triton-to-Linalg 核心技术

1. 整体技术路线
- 国际主流 GPU 路线:Triton → Triton GPU → LLVM → PTX
- 寒武纪 DSA 路线:Triton → Linalg → MLU → MLVM → LLVM IR → MLISA
2. 为何选择 Linalg Dialect?

- 避免重复造轮子:GPU 优化 Pass 无法复用于 DSA
- MLIR 社区广泛采用,基础设施丰富(Tile, Reduction, Fields Promotion)
- 易于扩展 OP 与定制化 Pass(Linalg Extension)
- 基于 Tensor/MemRef 定义,与 Triton IR 对应
- 业界主流方案(Triton-shared 项目)
3. Triton → Linalg 转换原则
- 尽可能使用 structured 算子,不使用
linalg.generic算子 - 尽早识别算子语义(如
tt.reduce→linalg_ext.argmax)
4. Triton-Linalg 构成部分

5. 核心难点:指针分析


问题本质:
tt.load可能对应copy(连续访存)或gather(离散访存),错误下降导致 DMA 效率骤降解决方案:自动化多维连续性识别算法


6. Linalg → MLU 下降流程
- Tile Fusion / Buffer Rise 等 Pass
- 复用 MLIR 官方基础设施 + 寒武纪定制优化

7. Triton-Linalg 开源项目
寒武纪开源跨平台 AI 编译器前端 Triton-Linalg,帮助开发者降低硬件适配成本,提高集成效率。
- GitHub 开源地址:http://github.com/Cambricon/triton-linalg
加入训练营
📺完整课程内容,请观看直播或查看课程回放:
InfiniTensor 官网: https://www.infinitensor.com
B站直播: InfiniTensor 官方直播间
视频号直播: InfiniTensor 视频号预约
答疑交流: 训练营官方社群⬇️

关注与交流

