https://www.lei.chat/zh/posts/mlir-linalg-dialect-and-patterns/
mlir体系的,可以从mlir角度讲述一个矩阵乘法 matmul 如何一步一步用mlir 代码 做循环展开、分块、融合、分配,并最终实现到硬件层次
https://juejin.cn/post/7008002811279441927
这篇将CUDA 矩阵乘法终极优化指南,讲述从c/c++ cuda生态圈,讲述如何将 矩阵乘法matmul 代码一步一步用 c/++c cuda 代码 做 循环展开、分块、融合、分配,并最终实现到硬件层次
1、所以现在流行的llm inference framework虽然都用了torch,但是都没有用torch.compile。毕竟graph compiler不会告诉你哪里quantize不会丢太多效果,也不能从attention里qkv/softmax的定义推导出flash attention,最后输出可读/理解性也差。不如简单粗暴地把llm里用到的fused kernel/op自己写一遍。
2、vllm曾经有一些PR([3014](https://link.zhihu.com/?target=https%3A//github.com/vllm-project/vllm/pull/3014) [2131](https://link.zhihu.com/?target=https%3A//github.com/vllm-project/vllm/pull/2131)),想在代码里用torch.compile“加速”,结果反而跑得更慢了。这里把3014里的结论贴上来。