Closed
[Bug-Report|缺陷反馈]: MulAddn InferShape 未校验 N>=2 约束并接受 N=1 #2831
KaranocaVeAdd on Aug 24Closed at Sep 29
Aug 24 Added label: bug-report
Aug 24 Associated pull request
陈思
Aug 24 Comments:
Aug 24 Comments:
/assign @KaranocaVe


Aug 24 Assign KaranocaVe as responsible person
陈思
Aug 24 Comments:
Aug 24 Comments:
/assign @KaranocaVe


陈思
Aug 24 Comments:
Aug 24 Comments:
/assign @KaranocaVe


CANN-robot
Aug 24 Comments:
Aug 24 Comments:
CANN-robot
Aug 24 Comments:
Aug 24 Comments:
Sep 21 Modify description of issue
Sep 29 changed custom state from 进行中 to 已完成
Sep 29 Close issue
liuchenghao
Oct 6 Comments:
Oct 6 Comments:
【Multica 同步】状态:done;说明:社区侧已由 PR !6011(Annyqw:「muladdn修改」,2026-09-28 合入)解决本需求,Multica 跟踪单同步关闭,感谢社区贡献者 Annyqw;详情:Multica issue AI4ME-211


问题描述
MulAddn 的公开约束要求属性 N>=2,但 Host InferShape 回调没有读取或校验该
属性。将 N=1 传入真实注册的 InferShape 回调时,仍返回 GRAPH_SUCCESS 并生成
输出 shape,非法属性因此可以通过 Host 形状推导阶段。
环境信息
重现步骤
cmake --build build --target math_op_host_ut -j2。
x2 shape=[2,1,3],数据类型使用 FLOAT16。
重复运行契约断言 5 次。
预期结果
根据 math/mul_addn/README.md 和 math/mul_addn/op_graph/mul_addn_proto.h
的约束,N=1 应在 Host 参数或形状检查阶段返回 GRAPH_FAILED,不应生成后续
tiling 可使用的成功结果。
实际结果
N=1 的观察用例 5/5 返回 GRAPH_SUCCESS,并生成输出 shape [2,4,3]。将期望
结果设为 GRAPH_FAILED 后,5/5 次断言失败;日志中实际返回值均为 0,而
GRAPH_FAILED 为 4294967295。合法控制组 x1=[1500,512,1]、x2=[1500,1,128]
重复 5 次通过。
日志/最小复现
关键源码位置:
最小复现夹具为 Host UT 中的 MulAddn.infershape_n_one_observation;验证日志
显示观察组和合法控制组退出码为 0,契约组因预期拒绝断言失败而退出码为 1。
该退出码是复现差异的测试信号,不是构建失败。
影响与规避方式
非法 N 可以越过 Host InferShape,进入后续图编译或 tiling 阶段,问题会晚于
方式是在调用前由上层保证 N>=2;建议 Host InferShape 和后续参数检查共享
同一约束。
建议的回归测试
增加 N=2、N=1、N=0 和负值属性用例:合法 N=2 返回 GRAPH_SUCCESS 且输出
shape 正确,所有 N<2 用例返回 GRAPH_FAILED;同时保留现有输入形状和 dtype
对照。
关联 PR