Closed
[Bug-Report|缺陷反馈]: DynamicPartition InferShapeRange 接受非法 num_partitions=0 #2820
KaranocaVeAdd on Aug 24Closed at Sep 19
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
songkai111
Sep 19 Comments:
Sep 19 Comments:
你好,由于该issue较长时间未贡献,我们将做issue关闭处理,如有需求请重新打开。


Sep 19 changed custom state from 进行中 to 已拒绝
Sep 19 Close issue
Sep 21 Modify description of issue
Oct 11 Added label: resolved
一、问题描述
DynamicPartition的 proto 约束规定num_partitions >= 1,但 HostInferShapeRange 只读取该属性而不校验范围。设置
num_partitions=0时仍返回成功并生成输出 shape range;Arch35 Tiling 已对相同属性返回失败,导致不同 Host 阶段
的输入校验不一致。
相关代码:
conversion/dynamic_partition/op_graph/dynamic_partition_proto.h:32-34conversion/dynamic_partition/op_host/dynamic_partition_infershape.cpp:33-44,79-121conversion/dynamic_partition/op_host/arch35/dynamic_partition_tiling.cpp:258-274二、环境信息
cann/ops-math0a2ce5b57caec6068d9e5658b740c2d41482aa15三、重现步骤
float输入x,shape 为[4,8],partitionsshape 为[4]。DynamicPartition的 InferShapeRange,并设置num_partitions=0。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