openmlsys / openmlsys-zh

《Machine Learning Systems: Design and Implementation》- Chinese Version
https://openmlsys.github.io
3.93k stars 426 forks source link

算子编译器和AI编译器的区别? #462

Closed zengzengsun closed 1 year ago

zengzengsun commented 1 year ago

在第7章讲AI编译器后端时提到了算子编译器,有一点迷惑两者的关系。 个人理解似乎AI编译器可以不包含算子编译器,在后端IR完成优化后直接调用算子库就可以了? 算子编译器是不是可以看成一种算子库的替代(IR中的节点可以对应去调用算子库的算子实现,也可以去调用算子编译器生成的算子实现)? 但是从整体上理解,算子编译器的输入跟AI编译器一样也是python代码,似乎要经过前中后端的处理,跟AI编译器是一样的。

zengzengsun commented 1 year ago

个人理解AI编译器可以不包含算子编译器,算子编译器是为了编译生成一个具体的算法比如gemm的硬件相关实现的,暴露给用户较简单的描述算法的方式,自动生成高效硬件代码。 这部分也可以通过手工算子库代替。算子编译器可能只是第三方快速enable硬件上自定义算子的方式,执行最高效的个人感觉应该还是手工优化。AI编译器可以只完成静态图层面的图优化,向下调用算子库。