已合并
fix: 符号表达式反序列化健壮性修复、tile对齐占位符合法化与Broadcast int64放开 #2164
fix: 符号表达式反序列化健壮性修复、tile对齐占位符合法化与Broadcast int64放开 #2164
已合并
xiebangrui2025创建于 13 天前
xiebangrui2025
xiebangrui2025成员
13 天前

描述

本 PR 为单 commit,包含四项内容:

1. 符号表达式反序列化三段式/Exp-Sqrt往返/替换环检测修复(同步 cann/ge PR 5005,适配本仓 af 命名空间)

  • ExpressionImpl::Deserialize 三段式重写:完整解析(IsAtEnd 拒绝截断串)、字节相等直通、规范树比较语义等价接受,修复 guard 序列化因 SymEngine 规范打印重排负系数 Add 项被误拒返回空、上层集合比较解引用空表达式的问题
  • 补齐 Exp(x)/Sqrt(x) 序列化-反序列化 token 注册与解析,单参函数统一走分发表派发
  • CheckReplacementCycle 重写:逐表达式枚举自由符号解析替换根并与对方根比较,覆盖复合表达式对盲区与间接环
  • 附带 expression robustness UT 及其 CMake 注册(与 PR #2159 引入版本逐字一致)

2. tile内轴运行时对齐占位符改名为合法标识符并新增ST用例

  • cube 融合 tile 内轴运行时占位符 align 由 Symbol("get_g_basen_basem_align()") 改名为合法标识符:轴属性经 CopyAttrFrom/CloneAscGraphs 拷贝时走 SerializeAttr -> DeserializeAttr 中转,带函数调用语法的名字无法被 scanner/parser 解析,导致拷贝图 align 丢失并产生 Parse expression str ... failed or incomplete ERROR
  • 消费侧适配:3 处可达打印出口(axes_reorder_solver_gen.cpp 的 InitiateArgs/SetVarCons、general_solver_gen.cpp 的 GenAlignInput)统一走 RuntimeAlignExprToCode 还原为函数调用形态,保证生成代码中运行时求值
  • 新增 ST 用例 TileInnerAxisRuntimeAlignPlaceholderSurvivesClone 固化占位符 align 经序列化 round-trip 后的保留性

3. v1/v35 Broadcast IR 注册放开 DT_INT64

  • v1 Broadcast IR 注册白名单放开 DT_INT64(设备端 BroadcastInt64 与 codegen 路径早已就绪,uint64 已在同一路径运行,并有 codegen UT/E2E 佐证)
  • 清理 v2 注册表中已过时的 Broadcast DT_INT64 todo 注释(v2 白名单已含 DT_INT64)

4. 清理 ExpressionImpl::Deserialize 中冗余的条件括号(if ((ret == nullptr) || ...)、if ((reparsed != nullptr) && (...)) 两处,无语义变化)

变更类型

关联的Issue

如何测试

  1. 编译并运行 common ST:sh build.sh -s --module=common -j 8,38 个用例全部 PASS(含新增 TileInnerAxisRuntimeAlignPlaceholderSurvivesClone)
  2. 编译并运行 optimize ST:sh build.sh -s --module=optimize -j 8,213 个用例全部 PASS
  3. 运行 expression robustness UT(ut_expression):3 个用例全部 PASS
  4. Broadcast int64:ascir_builtin_ops 增量构建通过;codegen UT(test_codegen_broadcast_api_call.cpp int64 场景)与 E2E(load_broadcast_store_int64)为既有覆盖
  5. 本单 commit 压缩与括号清理未额外本地构建,括号清理无语义变化,依赖 CI 验证

核对清单

其他信息

  • expression_robustness_unittest.cc 的 License 头措辞("You should not")与 PR #2159 引入版本逐字一致,远端 CI 不拦截(2159 合入先例);本地 pre-commit 的 oat-check 会误拦,已以 --no-verify 提交
  • 修复后可重跑此前暴露 Parse expression str get_g_basen_basem_align() failed or incomplete 的模型验证:该 ERROR 消失且 cube 融合图克隆后 tile 内轴 align 完整
likedislike
Pull Request已成功合入, 合并人@CANN-robot
(感谢 xiebangrui2025 的贡献)
xiebangrui2025xiebangrui2025成员
13 天前 创建了 pull request,commit c3953652
CANN-robotCANN-robot成员
13 天前 添加了label:cann-cla/yes
CANN-robot
CANN-robot成员
13 天前 评论:

Thanks for your pull-request.
The full list of commands accepted by me can be found at here.
You can get sig-info at here.
You can self-configure the PR merge rules for this repository. For more details, please refer to Here.
For more, you also can visit HICANN.


PR Approval Progress

✅ Congratulations! All modules have met the lgtm and approve requirements.

Module Approval Details

module lgtm status approve status
repo-cann/graph-autofusion ✅ yangyongqiang0606, xchu42 (2/2) ✅ yangyongqiang0606 (1/1)

💡 Tip:

  • Committer can comment /approve or /lgtm
  • Commenting /approve implies both code review (lgtm) and intent to merge (approve)

CLA Signature Pass

xiebangrui2025, thanks for your pull request. All authors of the commits have signed the CLA. 👍

likedislike
CANN-robotCANN-robot成员
13 天前 将niuyuhu,yangyongqiang0606,liyuewei,xchu42,zhang_shengjie,depeng1994,wqtshg_wt,peiyang,shengnan666,XuebinYang,sjtulxh,zhanj,zhujingjing,xuyafei,wangxiaotian995设为评审人
CANN-robotCANN-robot成员
13 天前 将niuyuhu,yangyongqiang0606,liyuewei,xchu42,zhang_shengjie,depeng1994,wqtshg_wt,peiyang,shengnan666,XuebinYang,sjtulxh,zhanj,zhujingjing,xuyafei,wangxiaotian995设为审查人
此处折叠了83条消息 查看更多
yangyongqiang
yangyongqiang成员
12 天前 评论:

/lgtm

likedislike
CANN-robotCANN-robot成员
12 天前 添加了label:lgtm
yangyongqiang
yangyongqiang成员
12 天前 评论:

/approve

likedislike
CANN-robotCANN-robot成员
12 天前 添加了label:approved
CANN-robotCANN-robot成员
12 天前 合入了pull request