AI 编译器系列(七)《(MLIR)AscendNPU IR 编译堆栈》

目录

[AscendNPU IR 架构概述](#AscendNPU IR 架构概述)

[Triton-Ascend + AscendNPU IR](#Triton-Ascend + AscendNPU IR)

[MLIR 简介:](#MLIR 简介:)

[1. 定义:](#1. 定义:)

[2. 特点:](#2. 特点:)

[AscendNPU IR 引入:](#AscendNPU IR 引入:)

[AscendNPU IR 架构详解](#AscendNPU IR 架构详解)

整体架构:

[HFusion 方言关键 Pass](#HFusion 方言关键 Pass)

昇腾硬件架构:

[HFusion 方言 OP 设计](#HFusion 方言 OP 设计)

[HFusion 预处理层](#HFusion 预处理层)

[HIVM 方言关键 Pass](#HIVM 方言关键 Pass)

[HIVM OP 设计原则](#HIVM OP 设计原则)

[HIVM OP 属性设计](#HIVM OP 属性设计)

[HIVM OP Interface 设计](#HIVM OP Interface 设计)

[HIVM CV 融合编译优化](#HIVM CV 融合编译优化)

[HIVM 片上内存映射](#HIVM 片上内存映射)

[调优选项及 Hint](#调优选项及 Hint)

毕昇调优编译选项

[细粒度调优 Compiler hint](#细粒度调优 Compiler hint)

总结


本文主要讲解 AscendNPU IR 架构。

AscendNPU IR 架构概述

Triton-Ascend + AscendNPU IR

MLIR 简介:

  1. 定义:
  • • MLIR(Multi-Level Intermediate Representation)是一种开源的编译基础设施,旨在通过统一且可扩展的中间表示解决软件碎片化和编译效率问题。
  1. 特点:
  • • 多层方言(Dialects)支持,从高层计算图到低层硬件指令的全栈抽象。

AscendNPU IR 引入:

  • • 背景:为了支持更多前端编程语言和硬件平台,特别是在NPU(如昇腾NPU)上的优化。

  • • 目标:通过 AscendNPU IR 实现高效编译和硬件优化。

AscendNPU IR 架构详解

整体架构:

  1. 方言层级:
  • • AscendNPU IR 采用多层方言设计,主要包括 Hfusion 和 HIVM 两层核心方言,辅以Annotation、HACC、Scope等辅助方言。
  1. 转换流程:
  • • 从前端 DSL 到 Triton IR,再到 TritonGPU IR(或 MLIR 公共方言如 Linalg),最终转换为AscendNPU IR,并编译成二进制文件。
  1. 核心方言解析:
  • Hfusion:

    • 设计原理: 基于 Linalg 的扩展,采用命名 OP 保留高层语义信息。

    • 功能: 数据预处理、OP 简化、类型转换等,不直接涉及硬件细节。

    • 优化: 合法性检查、冗余操作消除、高层 OP 分解等。

  • HIVM:

    • 设计原则: 轻量化抽象硬件表达能力,每个 OP 处理一个单元操作。

    • 功能: 支持硬件特定操作,如 Cube 类算子的快速构建,通过 Microop 封装复杂操作。

    • 优化: 内存分配、指令映射、流水并行等。

  1. 辅助方言:
  • Annotation: 传递属性信息,如内存优化提示。
  • HACC: 定义异构硬件相关信息,如函数类型、硬件单元信息。
  • Scope: 代码区域标记,支持代码分块和函数提取。

HFusion 方言关键 Pass

昇腾硬件架构:

  • • AIC核与AIV核分离,各自拥有专属内存和计算单元。

  • • 核间数据交互通过Global Memory(GM)进行。

HFusion 方言 OP 设计

HFusion 预处理层

  1. Legalize BF16
  1. OP Simplification
  1. Decomposition

HIVM 方言关键 Pass

HIVM OP 设计原则

  • • 基础 OP:根据每条芯片指令自底向上轻量化抽象,根据芯片能力校验 OP 约束。

  • • Macro OP:根据业务场景抽象,由多个处理单元操作复合组成。

HIVM OP 属性设计

HIVM OP Interface 设计

HIVM CV 融合编译优化

HIVM 片上内存映射

  1. 片上内存空间推导
  1. 片上内存格式推导
  1. 片上内存自动对齐

调优选项及 Hint

毕昇调优编译选项

  • • 控制多层编译,灵活选择对接层

  • • 进行功能调试,排查精度

  • • 细粒度调优性能

细粒度调优 Compiler hint

总结

AscendNPU IR 作为 MLIR 的开源编译组件,通过多层方言设计和丰富的优化技术,有效支持了多种前端编程语言和昇腾 NPU 的硬件优化。未来将吸引更多开发者和研究者参与,共同推动编译器技术和高性能计算的发展。

相关推荐
程序员老猫1 小时前
当 AI 能写 80% 的代码时,后端工程师的核心价值还剩什么?
人工智能
想会飞的蒲公英1 小时前
计算机怎样读取中文文本:编码、清洗与标准化
人工智能·python·自然语言处理
CIO_Alliance1 小时前
AI+iPaaS解决方案深度整合:让跨系统业务流程自动化一步到位
人工智能·ipaas·系统集成·ai+ipaas·企业cio联盟·企业级ai化转型
苏州IT威翰德2 小时前
算力资产“续命”专家:苏州威翰德科技赋能NVIDIA高端AI芯片芯片级维修
大数据·人工智能
天上路人2 小时前
A59P双波束语音模块:神经网络降噪在远场拾音中的工程实现分析
人工智能·深度学习·神经网络·ai降噪·ai语音·麦克风·回音消除
冬奇Lab2 小时前
AI 评测系列(03):LLM-as-Judge——让 LLM 评价 LLM 的正确姿势
人工智能·llm
Miao121312 小时前
某海外住宿平台如何在大规模场景下实现指标一致性:Minerva 指标平台实践
大数据·数据库·人工智能
冬奇Lab2 小时前
每日一个开源项目(第164篇):毕昇(BISHENG)- 面向企业的开源 LLM DevOps 平台
人工智能·开源·agent
CCPC不拿奖不改名3 小时前
大模型推理架构与开源生态知识整理
数据库·windows·python·架构·langchain·开源·github
声讯电子3 小时前
录音笔AI降噪方案:从录得到到听得清的听觉革命
人工智能·语音识别