MLIR
文章平均质量分 55
记录MLIR学习
Love Yourz73
这个作者很懒,什么都没留下…
展开
-
MLIR官方Tutorial学习笔记(三)
这章主要讲解了表达式的匹配重写(pattern match rewrite),有两种方式:通过DRR在td文件中重写,或直接用C++写匹配重写函数。我们这里主要使用第二种方式。因为首先匹配的是selfaddoneOp,所以记得在selfaddoneOp的定义里把“let hasCanonicalizer = 1”加上哦。这样就实现了transpose嵌套的一个匹配重写优化。其中的逻辑我相信聪明的你一眼就懂了。ok了,测试一下:很完美。你问我为什么要这么干?原创 2024-07-16 20:50:39 · 119 阅读 · 0 评论 -
MLIR官方Tutorials学习笔记(二)
图里说的很明白,三步:定义自己的Dialect,创建自己Dialect Operation的基类,在自己的Dialect里创建各种Operations。之后我们可以使用mlir-tblgen工具搭配-gen-op-decls查看生成的operations C++声明。使用mlir-tblgen工具搭配-gen-op-defs查看生成的operations C++定义。本章主要讲解了如何创建一个自己的Dialect并创建其中的Operations。原创 2024-07-16 17:28:21 · 215 阅读 · 0 评论 -
MLIR官方Tutorials学习笔记(六)
以上代码定义toy中的Print Operation Lowing到LLVM的类,其中包括匹配重写函数,匹配toy的printOp并生成对LLVM的printf函数的调用,从而实现printOp的lowing。在第五章Partial Lowing的基础上,现在进行Full Lowing,即将目前的Multi-dialect(Affine Dialect和Standard Dialect,以及遗留的Toy。当然对于LLVM IR的mlir表达式,我们也可以选择直接JIT运行得到结果。原创 2024-07-15 16:35:43 · 100 阅读 · 0 评论 -
MLIR官方Tutorials学习笔记(四)
个人感觉很像C++里的多态性,不同子类通过重写父类函数来实现调用时的不同行为,而这个是不同operations通过在自己的定义里重写interface的方法,来实现使用operations时的不同行为。此时我们的Dialect中有了这个接口,但是还没有应用pass来调用这个接口,我们在toyc.cpp中的passmanager添加MLIR自带的createInlinerPass(),这样pass就可以检查整个dialect中有没有可以应用我们已定义的inline接口的地方并应用。原创 2024-07-16 15:34:01 · 582 阅读 · 0 评论