章节1:什么是MLIR
2026/9/16 8:55:47 网站建设 项目流程

系列文章目录

第一章


目录

系列文章目录

前言

一、它解决什么问题?

二、核心概念

1.方言(Dialect)‌

2.操作(Operation)‌

3.下降(Lowering)‌

4.‌Pass 管理器‌

三、MLIR的作用

总结


前言

Multi-Level Intermediate Representation(MLIR,多级中间表示)

是一种用于构建可复用、可扩展编译器的框架,由谷歌发起、LLVM 团队主导开发,核心思想是让编译器在不同抽象层级上表示和优化程序。‌‌

一、它解决什么问题

传统编译器(如 LLVM)通常只有一种固定的低级 IR,在处理 AI 模型、专用硬件这类场景时,要么抽象层级太高丢失硬件细节,要么太低丢失高层语义,导致优化困难。 MLIR 允许你在一个统一框架下定义任意多个抽象级别的“方言”(Dialect),从贴近算法的高层表示,逐步“下降”(Lowering)到贴近机器的底层表示,每一层都能做适合该粒度的优化。‌‌

二、核心概念

1.方言(Dialect)‌

‌本质是一个命名空间,把一组操作(Operation)、类型(Type)、属性(Attribute)归在一起,代表某一抽象层级或领域。内置方言包括 func(函数)、arith(算术)、memref(内存)、scf(控制流)、linalg(线性代数)等。

2.操作(Operation)‌

‌MLIR 中最基本的语法单元,类似 LLVM 中的指令,但更通用——不管是高层张量运算还是底层加法指令,都统称为 Operation。

3.下降(Lowering)‌

通过“模式匹配+重写”的转换模式(Rewrite Pattern),把高层方言逐步转换为低层方言,直到变成 LLVM IR 或目标硬件代码。这个过程叫“渐进式下降”,信息只有在不再有用时才丢弃。

4.‌Pass 管理器‌

‌Pass 管理器‌:负责调度优化和转换 Pass 的执行顺序,支持流水线、依赖管理和结果缓存。‌‌

三、MLIR的作用

MLIR作为一个可重用、可扩展的开源编译基础框架,有一下好处:

1.处理软件碎片化;

2.为面向异构硬件的编译提供支持;

3.为领域专用编译器的开发减少开销;

4.连接已有的各种编译器

四、MLIR的诞生

‌MLIR最开始诞生,核心是为了解决谷歌内部XLA编译器在对接TPU等AI硬件时遇到的痛点‌,最初的应用场景完全聚焦在机器学习与异构硬件加速领域。

2018年前后,谷歌团队在开发XLA(TensorFlow的专属编译器)的过程中发现,传统LLVM的单层IR架构无法同时保留高层张量运算语义和底层TPU硬件的控制细节,导致大量优化工作难以落地。同时,TensorFlow生态中不同组件各自定义专属高层IR,硬件适配时需要重复对接多套IR,造成了严重的编译器碎片化问题。

正是为了彻底解决这些内部痛点,Chris Lattner带领团队启动了MLIR项目,最初的设计目标就是打造一套能在多层抽象层级间灵活转换的编译器基础设施,专门服务于机器学习模型的编译优化和TPU这类专用AI硬件的代码生成。

总结

2019年MLIR正式对外发布并开源后,才逐步扩展到高性能计算、高级硬件综合、量子计算编译等更多领域,最终成为整个行业通用的下一代编译器底座。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询