tvm dynamic shape 学习
探究tvm dynamic shape的实现.
对于阿里巴巴开源的EasyDist: Automated Parallelization System and Infrastructure for Multiple Ecosystems代码解读, 主要关注IR设计与搜索域构造.
Tiramisu 是一个基于polyhedral的DL compiler, 通过探索他的实现细节来学习如何利用polyhedral compilation并整合到他的dsl中的.
之前写过一篇带宽受限下的DSA后端优化, 不过主要是针对已经构建好Compute Schedule之后的优化, 今天准备展开讲讲. 从单层卷积到优化计算,再到Layer Fusion,以及后续各种优化,下面将通过一系列的例子来介绍:
Egg是一个基于EGraph的程序优化框架,
作者在其中实现基于Equality
Saturation概念的优化方法,
简单来说就是通过将所有的表达式保存在EGraph这个数据结构中,可以按任意顺序实施RBO(基于规则的优化),
因为其中同时存储了所有可能的表达式,
所以没有传统优化中phase ordering的问题,
最终可通过CostModel提取出最优的图结构.
Egg在编译优化方面已经有许多应用了, 比如王润基大佬写的SQL 优化器,
其中也详细解释了Egg的使用, 不了解的朋友可以参考一下.
在端侧AI编译中,每个阶段都需要大量的优化与trade-off,
比如中端的计算图优化与后端的算子Fusion以及后端算子的量化类型(平衡精度/速度),
如果基于传统优化方式,
可能许多模型最优的Pass顺序,算子Fusion方案都需要编译器工程师手动调试与指定.
这主要就是因为传统优化方式一旦lower之后就丢失了之前的信息,
失去了最优的可能性,
因此考虑采用Equality Saturation技术来将中端优化/后端Fusion/Tiling/算子精度选择都放入其中进行整体性优化,希望可以得到尽量优化的编译结果.