The Deep Learning Compiler: A Comprehensive Survey
https://arxiv.org/pdf/2002.03794.pdf
研究背景
深度学习编译是深度学习模型与硬件之间的桥梁
深度学习编译器通用设计框架
- 高级IR:表示计算和控制流,体系架构无关
- 低级IR:描述指令细节特性,体系架构相关
- 前端:将深度学习模型转化为计算图,体系架构无关优化
- 后端:将高级IR转化为低级IR,体系架构相关优化
深度学习编译器的关键组件
高级IR
高级IR表示
- 基于DAG的IR表示
- 基于Let绑定的IR表示
- 张量计算的表示
- 基于函数的表示
- Lambda表达式
- 爱因斯坦操作符
高级IR表示的实施
- 数据表示
- placeholder
- 位置形状表示
- 数据布局
- 边界
- 操作支持
- 广播
- 控制流
- 导数
- 定制操作
低级IR
- 低级IR表示的实现
- Halide-based IR
- Polyhedral-based(多面体) IR
- MLIR
- Other unique IR
- 基于低级IR的代码生成
- 低级IR的代码生成方法
- 将低级IR转换为LLVM IR
- 低级IR的优化方法
- 在LLVM的上级IR中执行目标特定的循环转换
- 为优化传递提供硬件目标的附加信息
- 低级IR的代码生成方法
前端优化
- 节点优化:Nop消除,零维度张量消除优化等
- 块级优化:代数简化,算子融合,算子下沉
- 数据流级优化:死代码消除,静态内存规划,布局转换
后端优化
硬件相关优化
- 硬件内建映射
- 内存分配和加载
- 内存延迟隐藏
- 循环相关优化
自动调优
- 参数化
- 代价模型
- 搜索技术
内核库优化
未来的研究方向
- 动态shape和预/后处理
- 改进自动调优
- 多面体模型
- 子图分区
- 量化
- 统一优化
- 差分编程
- 隐私保护
- 训练支持