how-to-optimiza-gemm 是大家参考得比较多的gemm优化tutorial,本文是在我的MacBook Pro 2019上进行的实践,处理器型号是i5-8257U
.
代码在:https://github.com/LeiWang1999/optimize-gemm-on-macbook2019
how-to-optimiza-gemm 是大家参考得比较多的gemm优化tutorial,本文是在我的MacBook Pro 2019上进行的实践,处理器型号是i5-8257U
.
代码在:https://github.com/LeiWang1999/optimize-gemm-on-macbook2019
近些日子在看看图神经网络这种非常稀疏的网络运算系统中有没有什么自己可以做的编译优化,其实在编译现在主流的图神经网络训练框架DGL的时候就不难注意到其依赖项里是有TVM的,这是不是说明现在的DGL也在使用TVM来进行自动调优呢?带着这个疑问我翻了一下DGL的代码,发现和tvm有关的部分只有一个叫做FeatGraph的框架,顺藤摸瓜找到了胡玉炜大佬发表在SC20上的Paper:
《FeatGraph: A Flexible and Efficient Backend for Graph Neural Network Systems》
在2021年6月亚马逊云科技 Community Day 上,张建老师做的题为《图神经网络和DGL在实际落地项目中的挑战和思考》这个Talk里指出,现在主流的图神经网络框架DGL的自己裁剪的Gunrock之后制作的minigun来做运算加速的,但是根据代码大胆猜测一下实际上DGL只在在0.3~0.4中才有使用的是minigun来做一些加速,在0.5中就不使用minugun了,而是将主要的运算抽象成了SpMM(稀疏稠密的矩阵乘)和SDDMM(sampled稠密稠密矩阵乘)两种运算,这项工作在DGL达到版本0.6的时候结合tvm的高效代码生成转变为了FeatGraph发表在SC20上,而现在DGL已经前进到了0.7版本了。
这篇文章是2021年中国科学院大学李炼老师的《编译程序高级教程》一课的学习笔记,这门课程的内容主要是基于LLVM来做一些中间代码的优化。不建议没有学习或者了解过编译原理的同学选修,平时作业占比较大,一共三次大作业共占期末总成绩的80分,然后是期末考试只有20分(而且可以使用离线的电子设备。但是作业爆炸难,是使用LLVM来实现一些程序分析,实现一个简单的C程序解释器、数据流分析、指针分析等。很多知识也是在我写这篇笔记的整理与复习的过程中才看明白的。
相似的课程为多伦多大学的CSCD70。而且就在考试的前一周,国内也有这方面可以看的公开课视频了,那就是南京大学的软件分析,兄弟们把泪目打在公屏上!
还有一些非常有用的参考资料:
Update your browser to view this website correctly. Update my browser now