找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

5453

积分

0

好友

766

主题
发表于 2 小时前 | 查看: 3| 回复: 0

8 月 1 日,HyperAI 主办的 Meet AI Compiler 技术沙龙第 9 期如期举行。来自智源研究院、TileRT 团队、腾讯、华为、智元创新等企业与研究机构的分享嘉宾,围绕 AI 编译器 在语言表达、算子计算、推理执行与场景落地等方向的协同演进展开深度研讨,聚焦技术痛点、实践方案和行业趋势。

华为 AscendNPU IR 架构师海丽娟以「AscendNPU IR:编译底座开源开放,支持多语言接入昇腾」为主题,系统介绍了昇腾毕昇编译器组件 AscendNPU IR 的整体架构与设计理念,并结合昇腾 950 的新特性、技术迭代优势与社区建设,拆解了这套开源底座如何支持多种前端语言接入。

海丽娟在 Meet AI Compiler 第 9 期现场演讲

在分享现场,海丽娟还详细解读了编译器面向新硬件的架构演进,为开发者展示了从上层语言到底层硬件的完整编译链路。

海丽娟演讲近景

为什么 Triton 编程高效易用?

Triton 同时兼顾高效与易用,优势从何而来?它采用类 Python 语法,提供 Block Level Tile 级编程,屏蔽了核内硬件内存、指令与流水等底层细节,从而降低算子开发门槛。Tile 编程模型让开发者专注于数据切分和 Tensor OP 抽象:核间调度仍由用户控制,而核内访存合并、Shared-Memory 管理则交给编译器自动完成。

更关键的是,Triton 方言和 Triton 官方 GPU 编译器都基于 MLIR 构建多级 IR 抽象,可针对不同硬件做深度优化。

Triton 编程模型与 CUDA C 对比

AscendNPU IR 持续进行架构优化

AscendNPU IR 是基于 MLIR 构建的昇腾硬件 Tile 级抽象,向下对接 LLVM IR,最终编译到昇腾硬件二进制;向上可接入 Triton 等三方语言与编译器。其技术特征包括:面向昇腾硬件自下而上的抽象,抽象核内内存、数据搬运等资源;提供 Tile 级 OP,跨架构统一支持 A2/A3 与昇腾 950 的 SIMD、SIMT 硬件;基于 MLIR 生态的开放性和可扩展性,便于更多上层语言接入。

AscendNPU IR 技术架构与关键技术特征

从 A2/A3 到今年最新上市的昇腾 950,AscendNPU IR 的编译架构保持两层设计:上层硬件无关层 HFusion,下层硬件相关层 HIVMHFusion 基于社区 Linalg 和扩展 OP,完成数据类型与 OP 规范化预处理、Auto Schedule 等融合优化。

AscendNPU IR 跨架构统一抽象编译架构演进

HIVM 负责昇腾硬件高层抽象,依次完成核映射编译、片上内存映射和处理单元映射。核映射编译会将高层 Tile 表达拆分到 Cube 核与 Vector 核,自动补齐核间数据通信、同步与 Workspace 内存管理,并进行 CV 流水并行优化。片上内存映射则把逻辑 Tensor 推导到对应物理内存,完成 Cube 的分型矩阵格式推导与地址分配。处理单元映射通过流水同步、向量化和张量化,使能高性能硬件指令。

与前代相比,昇腾 950 的 HIVM 从 Membased SIMD 扩展到 Regbased SIMD 和 SIMT;CV 融合编译也从 Global Memory 交互升级为紧耦合数据通路。整体上层稳定,Tile 编译则有较大升级。

Vector Regbased SIMD 架构演进

MemBased SIMD 阶段,Vector 计算基于片上 Unified Buffer 完成,指令直接操作片上内存。昇腾 950 新增寄存器层级,数据在高速寄存器中计算,编译工作随之发生三点变化:面向 Regbased 的向量化,将 Tensor 操作映射到固定位宽的寄存器指令,Load-Compute-Store 形成循环;寄存器粒度融合,通过 Cost Model 与搜索算法把多个 Triton OP 融合到一个 loop,减少数据进出片上内存;AVE 方言抽象,扩展昇腾亲和的 Vector 方言,屏蔽底层掩码差异,并合并随路操作指令。

Vector Regbased SIMD 编译优化流程

Vector SIMT 与 SIMT+SIMD 融合编译

昇腾 950 新增 SIMT 单元后,Vector 核可支持纯 SIMD、纯 SIMT,以及 SIMT+SIMD 混合执行三种模式。离散访存适合 SIMT,稠密计算则可继续走 SIMD。编译流程会先做融合分析,识别适合 SIMT 的代码段,再分别进行 SIMD 与 SIMT 编译,最后合并为整体 Vector 计算,并对硬件特性进行建模。

Vector SIMT 与 SIMT+SIMD 融合编译流程

CV 松紧耦合编译优化

A2/A3 上 Cube 和 Vector 只能通过 Global Memory 片外显存交换数据;而昇腾 950 的 Cube 结果可直接从 L0C 拷贝到 Vector 片上内存,反向亦然。这条紧耦合快速数据通路对 Attention 类算子性能帮助很大。CV 优化的关键技术包括 CV 流水并行,自动隐藏时延并充分利用 Cube/Vector 核资源;以及 AutoSubTiling,利用昇腾 950 的 1:2 配比将 Vector 操作对半切块,让两个 Vector 核并行计算。

CV 松紧耦合编译优化:A3 与 950 架构对比

最新版本编译器功能泛化工作

最新 AscendNPU IR 版本在以下五个方向做了功能泛化。

1. CV 数据交互功能泛化

Triton 算子中 Cube 与 Vector 计算可能分布在控制流不同分支,无法靠简单 Pattern Match 插入数据搬运。新版本增强了 InsertCVLoadStore Pass,通过全局跨控制流推导补齐 CV 数据交互:先插入确定性锚点(矩阵乘输入在 L1、输出在 L0C,向量 OP 输入输出在 UB),再基于锚点插入强制类型转换,跨控制流传播内存层级。若推导中出现层级冲突,就插入 Load-Store 或拷贝语句打通数据。A2/A3 通过 Global Memory Load-Store 交互,而昇腾 950 直接走片上拷贝。

复杂控制流场景 CV 数据交互功能泛化

2. MultiBuffer 增强

MultiBuffer 是流水并行的重要前提。此前实现只支持 for 循环,复用循环变量轮转 Buffer Slot,无法覆盖 while 与嵌套控制流。新方案引入独立 Buffer 计数器,随控制流分支轮转,准确跟踪 Slot。同时将 alloc 提升至 Cube/Vector 公共循环层,保证两侧对 multibuffer 变换的一致性。

复杂控制流场景 MultiBuffer 增强

3. AutoBlockify 默认开启

写 CUDA 或 Triton 算子通常会切出大量逻辑 block,但在昇腾上多次调度开销较高。AutoBlockify 将逻辑核归并到软件循环内调度,并允许在循环中应用 MultiBuffer、流水并行等优化。默认开启后,编译期会自动检查 Kernel 是否无核间同步,并修改 GridNum,将核间调度转换为核内循环。

AutoBlockify 默认开启:逻辑核到物理核映射

4. CV Pipeline 多模式探索

以 FlashAttention 为代表的算子包含多段 Cube/Vector 任务,串行执行会导致计算互相等待。CVPipelining Pass 会分析 Cube 与 Vector 代码段依赖,找到边界点,划分 Scope,再按调度算法生成多 buffer 完成流水并行。支持 Unroll、Skew 和动态等模式,不同负载可选择最优策略。

CVPipeline 默认开启与 Unroll/Skew 模式

5. CV 1:2 场景增强

昇腾 950 采用 1 个 Cube 核配 2 个 Vector 核的结构,CV 1:2 切分需要将 Tensor 尽量等分给两个 Vector 核。流程包括全局维度分析、插入切分标记、逐 OP 向根节点冒泡,最终完成切分;若遇到不可切场景则回退到 1:1。此外,针对 FP8 等 reduce 轴压力大的场景,支持 reduce 轴切分,通过 Global Memory 交换中间结果并二次归约;动态 shape 场景也增强了切分能力。

CV 1:2 场景切分优化流程

Triton-Ascend、AscendNPU IR 已开源共建

AscendNPU IR 已开源到昇腾社区,社区活动日历中有 AscendNPU IR 社区 SIG 双周例会,开发者可关注研讨议题和会议纪要。

昇腾社区还开放了开源实习项目和社区任务,任务难度分层,覆盖文档优化、单元测试补齐、Triton 算子迁移、新架构算子设计等不同类型,开发者可根据经验选择参与。

昇腾开源软件社区任务参与指南

在 AscendNPU IR 与 Triton-Ascend 的 开源仓 主页,可以找到社区任务快速链接和认领流程;每位开发者同时只能领取一个任务,开发过程全程互动开放。

社区任务发布与揭榜流程与悬赏列表

如果没有昇腾开发环境,社区提供免费的算力平台 HiDevLab( https://hidevlab.huawei.com/home );注册申请成功后默认有 100 小时免费时长,可用于任务开发与验证。

HiDevLab 开放算力体验平台创建环境界面

感谢大家关注!

云栈社区后续也会持续跟进 AI 编译器与昇腾生态的技术进展,欢迎开发者一起交流。




上一篇:数据校验与CRC实战:Modbus CRC-16参数、字节序与硬件加速避坑
下一篇:消息驱动的嵌入式框架YSF:五层架构、LV0/LV1与裁剪实践
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-8-18 08:16 , Processed in 1.151609 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表