图书目录

目录

本书源码

第1章用MLIR构建编译器

1.1MLIR概述

1.2通过创建引入MLIR: 一种Toy方言

1.2.1构建一种Toy方言

1.2.2异构编译器

1.2.3根据算力调整目标

1.2.4MLIR概述

1.3Toy方言IR表示

1.4Toy方言高级转化

1.4.1接口

1.4.2Toy方言形状推理

1.4.3形状推理

1.5方言下译到LLVM

1.6ARM指令SVE、SME在MLIR中的实现方式

1.6.1MLIR基本概念

1.6.2方言子模块构成

1.6.3方言操作

1.6.4什么是区域

1.6.5SVE在MLIR中的实现

1.7ARM上的矩阵乘法

1.7.1向量的外积

1.7.2SVE模式流

1.7.3SME ZA存储

1.7.4SME的实现

1.8MLIR与LLVM中的Affine指的是什么

1.9MLIR在Magma开源软件平台中的应用

1.9.1Magma背景

1.9.2Python Magma系统

第2章MLIR编译器基础

2.1MLIR语言参考

2.1.1高层结构

2.1.2MLIR符号

2.1.3MLIR作用域

2.1.4控制流与SSACFG作用域

2.1.5类型系统

2.1.6方言类型

2.2MLIR方言及运行分析

2.2.1MLIR简介

2.2.2常见的IR表示系统

2.2.3MLIR历史

2.3方言及运行详解

2.3.1方言基本概念

2.3.2运行机构拆分

2.3.3创建新的方言操作

2.3.4加载到MLIR上下文中

2.3.5定义算子

2.3.6创建方言流程总结(使用ODS)

2.4MLIR运算与算子

2.4.1MLIR运算与算子概述

2.4.2运算类(Operation)

2.4.3算子类(Op)

2.4.4MLIR OpBase.td算子类的作用

2.4.5MLIR 运算的构建之路

2.4.6MLIR TableGen后端生成算子代码

2.5MLIR的初步知识

2.6MLIR部署流

2.6.1MLIR部署流程

2.6.2MLIR应用模块

2.7MLIR框架概览

2.8MLIR基本数据结构

2.8.1MLIR基本概念

2.8.2MLIR源代码目录

2.8.3MLIR简易UML类图

2.8.4开发中用到的具体数据结构

2.9MLIR出现的背景与提供的解决方案

2.9.1背景与演进概述

2.9.2解决方案

2.10机器学习编译器: MLIR方言体系

2.10.1基础组件

2.10.2方言体系

第3章MLIR编译器功能模块

3.1深度学习AI编译器MLIR

3.1.1MLIR实现方式

3.1.2MLIR基本概念

3.1.3Op定义方式

3.2CodeGen方言介绍

3.2.1MLIR中CodeGen概述

3.2.2兴趣方言

3.2.3现有管道TensorFlow内核生成器

3.2.4IREE编译器(LLVM目标)

3.2.5IREE编译器 (SPIRV目标)

3.2.6多面体编译器

3.3MLIR编译器DSL技术

3.3.1DSL领域特定语言介绍

3.3.2DSL分类

3.3.3DSL示例

3.3.4DSL与DDD(领域驱动)

3.3.5DSL信息量排查

3.3.6方言流程结构

3.3.7MLIR ODS要点总结

3.3.8DSL技术示例代码演示

3.3.9MLIR源码工程操作分析

3.4调用堆栈、堆栈帧与程序计数器

3.4.1堆栈调用

3.4.2堆叠异常处理

3.4.3返回堆栈调用

3.4.4异常中断与应用

第4章MLIR方言技术

4.1定义方言

4.1.1定义方言概述

4.1.2可丢弃属性验证

4.1.3默认属性与类型分析器输出

4.1.4在运行时定义操作

4.2可扩展方言的实现细节

4.2.1使用Toy语言接入MLIR,最终转换为LLVM IR

4.2.2指定自定义汇编格式

4.3优化MLIR表达式

4.3.1手动匹配重写

4.3.2采用 DRR自动生成匹配与重写函数

4.3.3三种重写格式

4.4通用的转换接口

4.4.1函数内联

4.4.2形状推理

4.5从 MLIR 表达式进行部分下译

4.5.1背景知识(下译与方言转换)

4.5.2部分下译

4.6混合方言表达式下译到LLVM IR

4.7用于机器学习编译器的MLIR CodeGen方言

第5章TPUMLIR开发技术分析

5.1TPUMLIR简介

5.1.1TPUMLIR的工作流程

5.1.2TPUMLIR编译工程

5.1.3TPUMLIR开发环境配置

5.2工具参数介绍

5.3整体设计

5.3.1TPUMLIR分层

5.3.2构建Pass

5.3.3TPUMLIR主要工作模块

5.3.4算子转换样例

5.4神经网络的量化与训练

5.4.1量化技术概述

5.4.2校准技术

5.4.3算法实现

5.4.4可视化工具visual说明

5.4.5图层组

5.4.6划分存储周期

5.4.7GMEM分配

5.4.8TOP方言操作

5.4.9评估验证

5.5QAT量化感知训练

5.5.1QAT量化技术基本原理

5.5.2TPUMLIR QAT实现方案及特点

5.5.3TPUMLIR环境配置方法

5.5.4QAT示例化基本步骤

第6章MLIR中间表示与编译器框架

6.1MLIR的背景知识

6.1.1背景介绍

6.1.2MLIR支持多种不同需求的混合中间表示

6.1.3MLIR统一框架

6.1.4MLIR中的方言功能

6.1.5MLIR方言转换

6.1.6MLIR动手实践

6.2MLIR多层编译框架实现全同态加密的讨论

6.2.1多层编译框架与全同态加密概述

6.2.2同态加密技术介绍

6.2.3同态加密技术集成到MLIR框架中

6.3MLIR编译框架下软硬协同设计的思考

6.3.1架构探索概述 

6.3.2基于IR的性能分析方法 

6.3.3架构级别的IR 

6.3.4MLIR中引入架构探索的可能性与挑战

6.3.5AI架构数据流小结

6.4MLIR编译器的多面体优化

6.4.1多面体模型概述

6.4.2MLIR中的多面体表示 

6.4.3MLIR中引入多面体优化

6.4.4多面体优化小结 

6.5多模态模型AI芯片软硬件优化利器

6.5.1多模态模型基本原理 

6.5.2深度学习应用的多模态模型优化

6.6基于MLIR实现GEMM编译优化

6.6.1GEMM优化策略概述

6.6.2MLIR实现GEMM优化

6.6.3MLIR实现GEMM优化的优势 

6.7MLIR编译技术应对CIRCT项目硬件设计挑战

6.7.1CIRCT背景介绍

6.7.2使硬件/软件系统更容易开发

6.7.3CIRCT软件框架

6.7.4CIRCT方言转换 

6.7.5CIRCT小结 

6.8IREE HLO项目与MLIR编译器

6.8.1IREE HLO项目介绍

6.8.2定义方言算子内容

6.8.3实现方言间算子转换

6.8.4实现算子链的算法优化

6.8.5IREE HLO项目与MLIR编译器小结

第7章MLIR代码生成技术

7.1MLIR中的可组合和模块化代码生成

7.1.1结构化与可重定目标代码生成流程

7.1.2与代码生成相关的方言

7.1.3下层方言: 生成LLVM IR与二进制

7.1.4张量转换

7.1.5向LLVM逐步下译多维向量运算

7.2单线程CPU实验

7.2.1引擎实验

7.2.2推进转换

7.2.3实验设置

7.2.4基准测试

7.2.5内存带宽限制内核的性能

7.2.6计算约束核的性能

7.2.7深度卷积

7.2.8稀疏码生成概述

7.2.9MLIR代码生成优化示例

7.2.10代码生成技术小结

7.3利用MLIR实现矩阵乘法的高性能GPU码生成

7.3.1MLIR在GPU上张量核代码生成概述

7.3.2MLIR代码生成

7.3.3流程设计

7.3.4性能评估

7.3.5GPU上代码生成小结 

第8章MLIR的后端编译过程

8.1MLIR Toy方言编译器开发技术

8.1.1MLIR Toy方言模块

8.1.2在仿射方言中寻求优化机会

8.2MLIR Toy方言下译到LLVM IR

8.2.1MLIR Toy部分下译

8.2.2IR下译到LLVM方言

8.2.3代码生成及JIT实现

8.2.4下译技术小结

第9章BuddyMLIR 工程技术解析

9.1BuddyMLIR 项目详解

9.1.1BuddyMLIR项目概述

9.1.2如何运行BuddyMLIR

9.1.3如何理解BuddyMLIR架构

9.2BuddyMLIR 工程结构

9.2.1BuddyMLIR 的Bud方言

9.2.2DIP方言

9.2.3接口实现

9.2.4Buddy优化与Buddy翻译

第10章TPUMLIR开发实践

10.1TPUMLIR快速入门

10.1.1TPUMLIR环境配置搭建

10.1.2转换成int8对称量化模型

10.2各框架模型转ONNX参考

10.2.1ONNX转MLIR

10.2.2融合cvimodel模型文件

10.2.3模型融合过程

10.2.4测试流程

第11章IREE编译流程与开发实践

11.1通过VulkanSPIRV标准编译堆栈

11.1.1现有的ML堆栈挑战

11.1.2IREE体系结构

11.1.3IREE内核编译流程

11.1.4IREE运行时

11.1.5HAL: 受Vulkan启发的硬件抽象层

11.1.6HAL IR示例

11.1.7Vulkan现状与路线图

11.2IREE编译流程解析

11.2.1IREE编译流程示例解析(1)

11.2.2IREE编译流程示例解析(2)

11.2.3IREE编译流程示例解析(3)

11.2.4IREE编译流程示例解析(4)

11.2.5IREE编译流程示例解析(5)