MLIR学习资料整理
开发环境搭建Note
由于MLIR API经常变化,而且与LLVM项目深度绑定,进行MLIR开发的电脑存储容量应当能存储LLVM仓库,并且CPU性能能编译完整的MLIR。
如果不具备以上条件
也可以使用debian-sid的Docker镜像,从apt源下载MLIR的二进制分发
最好先学习LLVM,LLVM和MLIR有很多相似之处,但MLIR的样例很多都要比LLVM要抽象,我觉得没有LLVM好理解
官方资源
官网:Multi-Level Intermediate Representation Overview
Github仓库(属于LLVM的子项目):https://github.com/llvm/llvm-project/tree/main/mlir
Youtube频道:https://www.youtube.com/@MLIRCompiler
Tutorial
j2kun的Tutorial我认为是讲的比较好的,但该环境是基于Babel的,建议单开环境
MLIR官方的Tutorial,展示了MLIR的基本特性,建议J2kun的看完后再看
Startup
为了简化MLIR环境配置,我把官网的Tutorial独立出来放了个仓库
MLIR Hello展示了一个非常小的MLIR实现,对于MLIR的理解会有所启发
https://github.com/Lewuathe/mlir-hello
第三方资料
北大:周可行
这个资料可以总览MLIR项目的整体架构与思想
https://github.com/KEKE046/mlir-tutorial
中科院软件所:张洪滨
知乎ID法斯特豪斯
20211025-MLIR的简介-实践-思考-zhanghongbin.pdf
先进编译实验室
Lei.Chat()
从Google和AMD离职的大佬,他的几篇文章还不错
MLIR Linalg Dialect and Patterns
MLIR Vector Dialect and Patterns
MLIR CodeGen Dialects for Machine Learning Compilers
Compilers and IRs: LLVM IR, SPIR-V, and MLIR
MocusEZ
我自己踩过的坑😂
对于如何端到端运行MLIR程序的记录:如何愉快的运行一个MLIR程序
对于Toy Tutorial的一些个人见解:MLIR Toy Tutorial实践记录
拓展内容
LingoDB
LingoDB是TUM基于MLIR的列存数据库,项目仓库:https://github.com/lingo-db/lingo-db
可以参考我的资料进行配置:LingoDB源码编译与分析
TPU-MLIR
除了谷歌外,国内一家名为算能的公司在做:sophgo/tpu-mlir
Triton
OpenAI的Triton是目前MLIR应用的典型:triton-lang/triton
B站先进编译实验室对Triton源码的解析也有利于MLIR的OpenAI triton分享:triton源码结构
GEMM类
通用矩阵乘法运算(General Matrix Multiplication)
Numba也有基于MLIR的实现,目前还在Demo阶段:numba/numba-mlir
另外就是Polygeist,将C转为MLIR进行GEMM运算:https://polygeist.llvm.org/
HEIR
j2kun开发的项目,Google的基于MLIR的同态加密项目:https://heir.dev/
ClangIR
ClangIR也是基于MLIR上开发的,我在GSOC上面看到的,目前还在开发阶段:https://llvm.github.io/clangir/
Rust Binding
基于MLIR的C API,经常受到MLIR API变动而受到影响