Closed
[Bug-Report|缺陷反馈]: DynamicPartition InferShapeRange 接受非法 num_partitions=0 #2820
KaranocaVeAdd on  Aug 24Closed at  Sep 19
KaranocaVe
KaranocaVe
Aug 24 Create

一、问题描述

DynamicPartition 的 proto 约束规定 num_partitions >= 1,但 Host
InferShapeRange 只读取该属性而不校验范围。设置 num_partitions=0 时仍返回成功
并生成输出 shape range;Arch35 Tiling 已对相同属性返回失败,导致不同 Host 阶段
的输入校验不一致。

相关代码:

  • conversion/dynamic_partition/op_graph/dynamic_partition_proto.h:32-34
  • conversion/dynamic_partition/op_host/dynamic_partition_infershape.cpp:33-44,79-121
  • conversion/dynamic_partition/op_host/arch35/dynamic_partition_tiling.cpp:258-274

二、环境信息

  • 仓库:cann/ops-math
  • 源码 commit:0a2ce5b57caec6068d9e5658b740c2d41482aa15
  • OS/架构:Linux 5.10,aarch64
  • 硬件:Ascend 910B3;执行 Host UT
  • 编译器/Python/CMake:G++ 11.4.0 / Python 3.12.13 / CMake 3.22.1

三、重现步骤

  1. 构造 float 输入 x,shape 为 [4,8],partitions shape 为 [4]。
  2. 调用 DynamicPartition 的 InferShapeRange,并设置 num_partitions=0。
  3. 用 num_partitions=1 做合法对照,重复运行非法用例 5 次。

四、预期结果

num_partitions=0 不满足 >=1 约束,InferShapeRange 应返回 GRAPH_FAILED,
不应生成输出 shape range。

五、实际结果

InferShapeRange 返回 GRAPH_SUCCESS,并生成最大 shape [4,8];零值用例在 5
次重复运行中均通过。合法 num_partitions=1 对照同样成功,最大 shape 为
[4,8]。Arch35 Tiling 对小于 1 的值已返回失败。

六、验证信息

固定 commit 的 Host UT 构建退出码为 0,完整测试 2/2 通过,InferShapeRange
专项用例重复运行 5 次,结果稳定通过观察断言。

七、影响与规避方式

非法配置会通过 InferShapeRange 并产生与 proto 约束不一致的输出描述,后续阶段
可能再失败或按不一致的元数据继续处理。修复前应在调用方保证
num_partitions >= 1。

八、建议的回归测试

增加 num_partitions=0、num_partitions=-1 和合法 num_partitions=1 的
InferShapeRange/Tiling 对照测试,非法值均应返回 GRAPH_FAILED,合法值保持
现有输出 shape range。

关联 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
songkai111Collaborators
Sep 19 Comments:

你好,由于该issue较长时间未贡献,我们将做issue关闭处理,如有需求请重新打开。

likedislike
Ssongkai111Collaborators
Sep 19 changed custom state from 进行中 to 已拒绝
Ssongkai111Collaborators
Sep 19 Close issue
KaranocaVeKaranocaVe
Sep 21 Modify description of issue
CANN-robotCANN-robotCollaborators
Oct 11 Added label: resolved