| Files | Last commit | Last update |
|---|---|---|
splitd算子inferdatatype只推导首个动态输出,补齐多输出场景的dtype推导 Co-authored-by: sujunwei3<sujunwei3@huawei.com> # message auto-generated for no-merge-commit merge: !6775 merge fix/splitd-infer-datatype into master splitd算子inferdatatype只推导首个动态输出,补齐多输出场景的dtype推导 Created-by: sujunwei3 Commit-by: sujunwei3 Merged-by: cann-robot Description: ## 描述 SplitD 算子 RT2 infershape 的 InferDataType4SplitD 回调原先只调用 SetOutputDataType(0, xDtype),仅推导第一个动态输出实例的 dtype。y 为 DYNAMIC_OUTPUT,当 num_split > 1 时其余输出实例的 dtype 不会被推导,在纯 RT2(无 RT1 infershape)调用路径下会造成同一算子多个输出类型不一致。 修复方式:参照 Split/SplitV 已有的同类修复,通过 GetComputeNodeOutputNum() 遍历所有动态输出实例,逐个设置输入 dtype;并补充直接调用 infer_datatype 的多输出 UT 防止回归。 ## 关联的Issue #4183 ## 测试 1. **单元测试**(bash build.sh -u --ophost --ops=split_d --soc=ascend910b) - 新增 split_d_infer_datatype_bf16_multi_output:BF16 输入、num_split=2,断言两个输出均为 DT_BF16; - 新增 split_d_infer_datatype_float_multi_output:FLOAT 输入、num_split=3,断言三个输出均为 DT_FLOAT; - UT 采用 OpInferDataTypeContextBuilder 直接调用 infer_datatype,输出槽初始化为 DT_MAX 哨兵值,未推导的输出会立即断言失败。 2. **反向验证** - 临时恢复旧的单输出实现后,两个新用例 FAILED,证明 UT 能捕获旧缺陷;恢复修复后 5 个用例全部 PASSED。 3. **回归** - 原 3 个 infershape UT 用例(正/负 split_dim、整除性校验)无回归。 ## 文档更新 不涉及 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6775 | 17 days ago |