007、MLIR转换与模式匹配:RewritePattern机制

张开发
2026/4/15 10:05:28 15 分钟阅读

分享文章

007、MLIR转换与模式匹配:RewritePattern机制
调试手记:为什么我的MLIR模式死活匹配不上?上周调一个Tile大小的优化问题,在MLIR里写了个简单的转换模式,结果跑了半天发现根本没触发。打开debug输出一看,匹配次数为零。这种问题在MLIR开发里太常见了——你以为模式写对了,实际上差了几个关键细节。从一次失败的匹配说起当时我在做卷积的tiling优化,写了这么个模式:struct ConvTilePattern : public OpRewritePatternConvOp { ConvTilePattern(MLIRContext *context) : OpRewritePatternConvOp(context, /*benefit=*/1) {} LogicalResult matchAndRewrite(ConvOp op, PatternRewriter rewriter) const override { // 这里踩过坑:直接检查属性值,没考虑可能不存在的情况 auto tileSize = op-getAttrOfTypeIntegerAttr("tile_size"); if (!tileSize || tileSize.getValue() = 32) { return failure(); // 这里逻辑反了,应该匹配需要优化的场景 } // 实

更多文章