TLE × FlagTree × AscendNPU-IR 技术协同报告
Triton Language Extension (TLE)、FlagTree 编译器与 AscendNPU-IR 构建了从算子编程到硬件执行的端到端技术融合体系:
- TLE:通过编译提示(Hints)机制扩展 Triton 语言,传递硬件优化意图
- FlagTree:统一编译框架,解析 Hints 并驱动 MLIR 优化 Pass,实现 TTIR → Linalg IR 转换
- AscendNPU-IR:分层开放中间表示,承接 Linalg IR,在 HFusion/HIVM 层完成昇腾硬件深度优化
核心成果:关键算子性能提升 10%~20%,为 AI 开发者提供”编写一次、多端高效运行”的统一编程体验。
技术要点
一、AscendNPU-IR 分层开放架构
| 层级 | 能力 | 适用场景 |
|---|---|---|
| HFusion 层 | 搬运 / 计算 / 内存三大类高阶 OP,开发者仅需关注 Tile 切分策略 | 快速适配 |
| HIVM 层 | 同步指令插入、片上内存地址控制、乒乓流水等细粒度硬件控制 | 深度优化(指令级调度) |
FlagOS 组件可灵活选择对接层级:HFusion 层快速适配,HIVM 层实现 Llama、Qwen 等大模型的极致性能榨取。
二、IR 转换路径
1 | TTIR → Linalg → AscendNPU-IR (HFusion/HIVM) → 毕昇编译器 → 昇腾机器码 |
- 通过 Linalg 方言实现与 AscendNPU-IR 的无缝对接
三、毕昇编译器协同优化
- 自动完成指令调度与合并消减
- 减少冗余访存
- 基于动态二进制插桩实现分钟级内存异常定位
合作要点
FlagGems 算子迁移:在华为已完成重点算子功能适配的基础上,推动 FlagGems 算子库向昇腾 NPU 的迁移验证与性能调优,实现算子运行到模型部署的端到端打通。
FlagTree 版本同步:智源与华为团队完成 Triton-Ascend 最新特性向 FlagTree 和 Flir 的同步及 LLVM 版本兼容处理,建立每月同步机制,持续跟踪上游演进。
Hints 传递链路:
1
2
3TLE 定义 Hints 语法
→ FlagTree 解析并编码为 MLIR 属性
→ AscendNPU-IR 通过自定义 Pass 识别并驱动硬件级优化分层接口对接:FlagTree 根据优化深度灵活选择 AscendNPU-IR 对接层级(HFusion 快速适配 / HIVM 深度优化),支持通过自定义 MLIR Pass 注入优化逻辑。
统一编译流程:各层职责清晰——FlagTree 负责 Triton DSL → Linalg IR,AscendNPU-IR 负责硬件亲和优化,毕昇编译器负责机器码生成。
生态互通:
- AscendNPU-IR 在 Gitcode 开源
- FlagTree 在 GitHub 开源
- FlagTree 已支持 12+ 芯片后端,AscendNPU-IR 为多后端统一管理提供稳定支撑
成果
| 指标 | 结果 |
|---|---|
| 重点算子性能提升 | 10%+(Hints 驱动优化) |
| Cube 计算效率 | 特定 Shape 下接近硬件峰值 |
| 跨硬件迁移成本 | 显著降低(无需重写底层代码) |
| 生态覆盖 | FlagGems(全球最大 Triton 算子库)完成昇腾 NPU 迁移,支撑大模型训练与推理 |
关键信息总结
- 核心价值:Triton 算子”一写多用”——通过 TLE + FlagTree + AscendNPU-IR 协同,无缝运行在昇腾 NPU 上
- 技术路径:TTIR → Linalg → AscendNPU-IR → 毕昇编译器,每层职责清晰
- 合作节奏:每月同步 Triton-Ascend 上游特性,持续演进
- 开源状态:双方均已开源(AscendNPU-IR @ Gitcode,FlagTree @ GitHub)
- 待填项:千卡训练加速比(文中标注为 xx%,需补充实测数据)