Compiler 2022

compiler summary

Posted by Treaseven on February 20, 2025
编译器 年份 技术层次 技术阶段 技术路线
Halide 2013 图层,算子层,指令层 模板调优,规则组合 计算调度分离
Latte 2016 图层 模板调优 追踪编译
DeepBurning 2016 图层 模板调优 追踪编译
AutoCodeGen 2016 图层 模板调优 追踪编译
Haddoc2 2017 图层 模板调优 追踪编译
TACO 2017 算子层 规则组合 计算调度分离
XLA 2017 图层,算子层 模板调优 追踪编译
DLVM 2018 算子层 模板调优 追踪编译
Diesel 2018 算子层 模板调优 追踪编译
Relay 2018 图层 模板调优 追踪编译
TVM 2018 图层,算子层,指令层 模板调优,规则组合 计算调度分离
JAX 2018 图层,算子层 模板调优 追踪编译
TorchScript 2019 图层,算子层 规则组合 追踪编译
TC 2018 算子层 分析优化 多面体模型
nGraph 2018 图层 模板调优 追踪编译
Glow 2018 图层 模板调优 追踪编译
HeteroCL 2019 算子层 模板调优  

编译器中的一些优化心得

  • 数据重用:一个操作的输入张量的维度数小于操作的循环维护数,说明这个张量在计算过程必然会被重复访问,可以考虑把频繁重用的数据放入更快的存储层级,可以调整循环顺序来提高数据局部性