Closed
[Bug-Report|缺陷反馈]: MulAddn InferShape 未校验 N>=2 约束并接受 N=1 #2831
KaranocaVeAdd on  Aug 24Closed at  Sep 29
KaranocaVe
KaranocaVe
Aug 24 Create

问题描述

MulAddn 的公开约束要求属性 N>=2,但 Host InferShape 回调没有读取或校验该
属性。将 N=1 传入真实注册的 InferShape 回调时,仍返回 GRAPH_SUCCESS 并生成
输出 shape,非法属性因此可以通过 Host 形状推导阶段。

环境信息

  • 仓库/commit:cann/ops-math / 0a2ce5b57caec6068d9e5658b740c2d41482aa15
  • OS/架构:Linux 5.10/aarch64
  • Ascend 硬件:Ascend 910B3
  • Driver/Toolkit/OPP:Driver 25.5.2;CANN Toolkit/OPP 9.1.0
  • 编译器和 Python:GCC/G++ 11.4.0;Python 3.12.13;CMake 3.22.1

重现步骤

  1. 在上述 commit 构建 Host UT:
    cmake --build build --target math_op_host_ut -j2。
  2. 调用 MulAddn 的 Host InferShape,设置 N=1、x1 shape=[2,4,1]、
    x2 shape=[2,1,3],数据类型使用 FLOAT16。
  3. 重复运行该用例 5 次;再将相同输入的期望返回值改为 GRAPH_FAILED,
    重复运行契约断言 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 次通过。

日志/最小复现

关键源码位置:

  • math/mul_addn/README.md:92-96
  • math/mul_addn/op_graph/mul_addn_proto.h:31-37
  • math/mul_addn/op_host/mul_addn_infershape.cpp:37-55

最小复现夹具为 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

likedislike
KaranocaVeKaranocaVe
Aug 24 Added label: bug-report
KaranocaVeKaranocaVe
Aug 24 Associated pull request
陈思
陈思Collaborators
Aug 24 Comments:

/assign @KaranocaVe

likedislike
CANN-robotCANN-robotCollaborators
Aug 24 Assign KaranocaVe as responsible person
陈思
陈思Collaborators
Aug 24 Comments:

/assign @KaranocaVe

likedislike
陈思
陈思Collaborators
Aug 24 Comments:

/assign @KaranocaVe

likedislike
CANN-robot
CANN-robotCollaborators
Aug 24 Comments:

Notice

This issue is already assigned to KaranocaVe. Please do not assign repeatedly.

likedislike
CANN-robot
CANN-robotCollaborators
Aug 24 Comments:

Notice

This issue is already assigned to KaranocaVe. Please do not assign repeatedly.

likedislike
KaranocaVeKaranocaVe
Sep 21 Modify description of issue
Ssongkai111Collaborators
Sep 29 changed custom state from 进行中 to 已完成
Ssongkai111Collaborators
Sep 29 Close issue
liuchenghao
liuchenghao
Oct 6 Comments:

【Multica 同步】状态:done;说明:社区侧已由 PR !6011(Annyqw:「muladdn修改」,2026-09-28 合入)解决本需求,Multica 跟踪单同步关闭,感谢社区贡献者 Annyqw;详情:Multica issue AI4ME-211

likedislike