土法炼钢兴趣小组的算法知识备份

【编译器与 MLIR】AI 时代的编译器基础设施

文章导航

分类入口
compilerarchitecture
标签入口
#mlir#llvm#compiler#dialect#linalg#affine#gpu#tensor#iree#codegen#ai-compiler#heterogeneous-computing#tablegen#pass

目录

编译器与 MLIR — AI 时代的编译器基础设施

编译器工程正在经历一场范式转移:传统三阶段(前端-中端-后端)的单一 IR 设计已难以承载 AI 编译器、异构计算、领域专用架构(DSA)对大跨度抽象和多级优化的需求。MLIR 作为 LLVM 生态的顶层演化,以”方言 + 渐进降阶”的方式统一了从张量计算、循环变换到硬件指令的整条编译链。

但目前 MLIR 的学习高度依赖演讲录像、源码和零散博客,缺乏一部将编译器工程方法MLIR 设计哲学融会贯通的系统性读物。这个系列试图填补这一空白。

推荐入口

一、这个系列要回答的五个问题

  1. 为什么 LLVM IR 不够用了?MLIR 究竟解决了什么新问题? AI 编译器需要在张量级、循环级、向量级和标量级同时做优化,传统单一 IR 无法承载这种跨度。MLIR 用”方言”让每一层抽象都有自己的 IR,用”渐进降阶”把编译过程变成多条可组合的路径。详见第一、二部分。

  2. 方言(Dialect)只是另一种 DSL 吗?它的”基础设施复用”到底体现在哪? 方言不只是自定义 IR 语法,它共享 MLIR 的类型系统、Pass 管理、模式重写框架、TableGen 工具链和打印/解析基础设施。Pass 管理、打印/解析、验证与模式重写等通用设施可直接复用,方言作者主要投入语义与降阶设计。详见第二部分与第三部分。

  3. 从 Tensor 到 LLVM IR 的降阶路径是什么?每一步在做什么优化? 从高层的 tensor 操作,经过 linalg 结构化操作、affine 循环分析、scf 控制流、memref 内存化,最终到 llvm 方言的完整路径。每一步既是表示转换,也是优化机会。详见第四部分。

  4. MLIR 在 PyTorch、TensorFlow、JAX 等 AI 框架中是怎么接入的? 框架通过 Torch-MLIR、MHLO、ONNX-MLIR 等桥接层将各自的计算图翻译到 MLIR 方言栈,然后复用同一套编译管线。详见第十四章。

  5. 编译器与 AI 正在互相吞噬——AI 生成的编译器有未来吗? MLIR 的方言可组合性让”AI 搜索优化空间”和”AI 生成 Pass”变得可能。MLIR 2.0 规划中,编译器本身正在成为 AI 的下一个目标领域。详见第十八章。

二、篇目依赖关系与推荐阅读路径

全书共五部分、18 章。各章按「问题—机制—代码—边界」组织;动手实验集中在第 03、15 章,调试工具箱集中在第 16 章。

强依赖

flowchart TD
  A["01–02 编译器挑战 + MLIR 全景"] --> B["03 环境搭建 + 第一个 Pass"]
  B --> C["04 Operation / 方言 / IR"]
  C --> D["05 类型系统"]
  C --> E["06 ODS + TableGen"]
  C --> F["07 Region 与 Block"]
  D --> G["08–09 Pass + 模式重写"]
  E --> G
  F --> G
  G --> H["10 方言转换与渐进降阶"]
  H --> I["11 Tensor / Linalg"]
  H --> J["12 Affine / SCF"]
  H --> K["13 GPU 代码生成"]
  I --> L["14 AI 框架桥接"]
  J --> L
  K --> L
  L --> M["15 实战微型 DSL"]
  M --> N["16 调试工作流"]
  M --> O["17 IREE 集成"]
  M --> P["18 未来趋势"]

推荐阅读路径

三、目录与每篇一句话价值

第一部分:编译器工程的再思考与 MLIR 缘起

第二部分:MLIR 核心概念深入

第三部分:编译流水线与变换基础设施

第四部分:面向 AI 的编译优化核心

第五部分:实战、工具链与未来演进

四、读者定位与先修要求

维度 说明
主要读者 AI 框架开发者、编译器工程师、系统架构师、高性能计算研究员
次要读者 对编译器基础设施感兴趣的高年级本科生、研究生,以及从 LLVM 转向 MLIR 的工程师
先修知识 熟悉 C++、基本数据结构与算法;了解编译原理(词法/语法分析、IR、优化 pass);有 LLVM 使用经验更佳,非必须

五、写作方法与风格

六、关键参考资料

核心官方文档(A 级)

经典论文(A 级)

社区项目(B 级)

标杆书籍(A 级)

七、与其他系列的关联

八、本系列的承诺与不承诺

承诺

不承诺

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-06-09 · compiler / architecture

【编译器与 MLIR】张量中端:Tensor 与 Linalg 方言

解析 AI 编译的核心抽象层:Tensor 方言的不可变语义与操作、Linalg 方言的结构化操作(逐元素、归约、收缩)及其通用表示 linalg.generic,以矩阵乘法为例展示从高层表示到底层循环的完整降阶路径。

2026-06-09 · compiler / architecture

【编译器与 MLIR】MLIR 全景图与设计哲学

从 Module-Operation-Region-Block 四层结构出发,系统讲解 MLIR 的三条核心设计原则:渐进降阶、方言可组合性、基础设施复用,配合 IREE、CIRCT、Torch-MLIR 等实际案例建立心智模型。

2026-06-09 · compiler / architecture

【编译器与 MLIR】类型系统与属性

解析 MLIR 的类型体系:内建类型(Integer、Float、Tensor、MemRef)与自定义方言类型的注册机制;区分 Type 与 Attribute 的设计意图;通过 OpBuilder 理解类型和属性在 IR 构造中的实际角色。


By .