关注

016、MLIR的Parser与Printer:文本格式与二进制格式

MLIR的Parser与Printer:文本格式与二进制格式

从一次凌晨三点的调试说起

上周五晚上,我在调试一个自定义的MLIR方言,把IR dump到文件里,第二天再load回来跑。结果Parser报了个“unexpected token”错误,定位到一行看起来完全正常的操作上。我盯着那行代码看了十分钟,最后发现是Printer输出时把某个属性类型缩写成了“i32”,而Parser在读取时默认把它当成了“si32”——一个根本不存在的类型。这个坑让我意识到,MLIR的文本格式和二进制格式之间的转换,远没有想象中那么简单。

如果你也在写自定义方言,或者正在把MLIR集成到生产环境中,这篇文章可能会帮你省下几个通宵。

文本格式:MLIR的“人类语言”

MLIR的文本格式(通常以.mlir结尾)是调试和开发阶段的主力。它看起来像这样:

module {
  func.func @main(%arg0: i32) -> i32 {
    %0 = arith.addi %arg0, %arg0 : i32
    return %0 : i32
  }
}

但别被它的“可读性”骗了。Parser在解析这段文本时,背后有一套严格的语法规则。我踩过最深的坑是属性(Attribute)的解析顺序

属性解析的“先来后到”<

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/Jack010169/article/details/161851962

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--