| Files | Last commit | Last update |
|---|---|---|
fix: 责任田算子日志质量整改 Co-authored-by: yifangao<gaoyifan20@huawei.com> # message auto-generated for no-merge-commit merge: !5043 merge fix-log-evaluation-20260825 into master fix: 责任田算子日志质量整改 Created-by: yifangao Commit-by: yifangao Merged-by: cann-robot Description: ## 描述 根据 cann-log-evaluation-report-20260825.xlsx 的“问题明细”,处理 ops-math 仓库中 ConfusionTransposeD、DynamicStitch、FusedMulAddN、HistogramV2、LinSpace 和 Range 算子目录的问题;OneHot 在报告中无命中项。 本 PR 当前修复 134 条、涉及 20 个文件: - 日志级别错配 15 条:失败日志由 INFO 调整为 ERROR; - 拼写错误 7 条; - 语法错误 6 条; - 禁止中文 106 条:将报告命中的输出文案翻译为英文,并保留原占位符和判断逻辑。 经复查,“提示 / 禁止自定义打印”条目的建议是改用统一日志接口,但现有 std::cout/print 与候选日志接口在 stdout/stderr、默认日志级别和可见性方面并不等价。为避免改变测试输出采集行为,本 PR 暂不修改这 95 条,已回退此前针对它们的修改。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2896 ## 测试 冒烟:http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260827_085659613 ## 文档更新 无文档更新。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## 已修改的 Excel 条目 以下行号均指 cann-log-evaluation-report-20260825.xlsx 的“问题明细”Sheet 实际行号(含表头)。本 PR 共修改 134 条。 ### DynamicStitch(6 条) - 2672–2674,conversion/dynamic_stitch/examples/test_geir_dynamic_stitch.cpp:253,304,343:将初始化、运行图和反初始化失败日志中的 INFO 改为 ERROR,使失败事件与日志级别一致。 - 9132,conversion/dynamic_stitch/op_host/dynamic_stitch_infershape.cpp:88:将 must be same of the value of N 改为 must be the same as the value of N,并将 indices'size 改为 indices' size。 - 9133,同文件 :116:将 dimNum must <= 改为 dimNum must be less than or equal to。 - 9134,同文件 :153:将 suffixShape is does not same 改为 the suffixShape is not the same。 ### FusedMulAddN experimental 目录(108 条) - 2871–2873,experimental/math/fused_mul_add_n/examples/test_geir_fused_mul_add_n.cpp:179,224,267:将初始化、运行图和反初始化失败日志中的 INFO 改为 ERROR。 - 25381–25456,experimental/math/fused_mul_add_n/tests/st/test_aclnn_fused_mul_add_n.cpp:将 76 条测试输出完整翻译为英文,覆盖空 Tensor、结果比对、Golden 自测、L0/L1/L2 用例、不变量、NaN/Inf、整数回绕、广播等价、确定性和最终汇总。例如: - 空 tensor(0 元素),无需比对 → empty tensor (0 elements), no comparison needed; - 不匹配 [%zu]: 期望=..., 实际=... → mismatch [%zu]: expected=..., actual=...; - CPU Golden 自测汇总: 通过 %d / 失败 %d → CPU Golden self-test summary: passed %d / failed %d; - 总体结果: %s → Overall result: %s。 修改保持 %s/%d/%zu/%.6f 等占位符、换行和判断逻辑不变。 - 25457–25463、25466,experimental/math/fused_mul_add_n/tests/st/torch/compare.py:59,78,95,96,99,114,121,135:翻译空 Tensor、NaN/Inf、阈值、最大差异、整数不匹配和 shape 不一致等比对输出。 - 25470,experimental/math/fused_mul_add_n/tests/st/torch/golden.py:189:+inf 传播 改为 +inf propagation。 - 25472、25474–25475、25477–25487、25489、25492、25494–25495,experimental/math/fused_mul_add_n/tests/st/torch/test.py:翻译 NPU 可用性、Golden 不变量、NaN 位置、测试结果、参数错误、共享库加载、用例筛选及最终报告输出。例如: - NPU 不可用 → NPU unavailable; - 结果 → Result; - 总体测试报告 → Overall test report; - 总计/通过/失败/跳过 → Total/passed/failed/skipped。 - 25504,experimental/math/fused_mul_add_n/tests/ut/op_host/test_fused_mul_add_n_tiling.cpp:1045:将“fp32 应比 fp16 用更多核”的断言说明翻译为英文。 - 25510,experimental/math/fused_mul_add_n/tests/ut/op_kernel/test_fused_mul_add_n.cpp:887:将 x3 shape [1,1] 与 [1] 输出不一致 改为 x3 shape [1,1] and [1] outputs differ。 ### FusedMulAddN 正式目录(3 条) - 3117–3119,math/fused_mul_add_n/examples/test_geir_fused_mul_add_n.cpp:206,257,299:将初始化、运行图和反初始化失败日志中的 INFO 改为 ERROR。 ### HistogramV2(7 条) - 3140–3142,math/histogram_v2/examples/test_geir_histogram_v2.cpp:198,249,291:将初始化、运行图和反初始化失败日志中的 INFO 改为 ERROR。 - 3143,math/histogram_v2/op_graph/histogram_v2_graph_infer.cpp:41:将 befer set y dtype 改为 before set y dtype。 - 9266,math/histogram_v2/op_api/aclnn_histc.cpp:121:将 The value of bins can not less or equal 0. 改为 The value of bins must be greater than 0.。 - 9267–9268,同文件 :129,136:将 The value of max should greater than or equal to min. 改为 The value of max should be greater than or equal to min.。 ### LinSpace(6 条) - 3175–3177,math/lin_space/examples/test_geir_lin_space.cpp:209,260,302:将初始化、运行图和反初始化失败日志中的 INFO 改为 ERROR。 - 3178,math/lin_space/op_host/lin_space_tiling.cpp:526:将误写的函数名 TilingPrepare4LinSpaceFlat 改为实际函数名 TilingPrepare4LinSpace。 - 3179,math/lin_space/op_host/lin_space_tiling_arch35.cpp:225:将 funtion 改为 function。 - 3180,同文件 :389:将 caculate 改为 calculate。 ### Range 正式目录(3 条) - 3237,math/range/op_host/arch35/range_tiling_arch35.cpp:80:将 funtion 改为 function。 - 3238–3239,math/range/op_host/range_infershape.cpp:120,123:将两处 increate 改为 increase,分别保留 positive/negative 分支语义。 ### Range experimental 目录(1 条) - 25842,experimental/math/range/examples/test_aclnn_range.cpp:134:将 输出数据长度为: 改为 Output data length: ,同时替换全角冒号。 ### 无修改项 - ConfusionTransposeD:只有“禁止自定义打印”条目,按下节说明暂未修改。 - LinSpaceD experimental 目录:只有“禁止自定义打印”条目,按下节说明暂未修改。 - OneHot 正式及 experimental 目录:报告中均无命中项。 ## 暂未修改的 Excel 条目 以下 95 条均为“严重级:提示,规则:禁止自定义打印”。当前保留原来的 std::cout/cout/printf/print,待仓库明确能够保持测试输出语义的统一接口后再处理。 ### ConfusionTransposeD(5 条) - 24258–24260:conversion/confusion_transpose_d/tests/ut/op_api/test_aclnn_confusion_transpose_d.cpp - 24261–24262:conversion/confusion_transpose_d/tests/ut/op_host/arch35/test_confusion_transpose_d_tiling.cpp ### DynamicStitch(12 条) - 24312–24319:conversion/dynamic_stitch/examples/test_geir_dynamic_stitch.cpp - 24320–24321:conversion/dynamic_stitch/tests/ut/op_host/arch35/test_dynamic_stitch_tiling.cpp - 24322–24323:conversion/dynamic_stitch/tests/ut/op_host/test_dynamic_stitch_infershape.cpp ### FusedMulAddN experimental 目录(31 条) - 25376–25379:experimental/math/fused_mul_add_n/examples/test_geir_fused_mul_add_n.cpp - 25380:experimental/math/fused_mul_add_n/tests/st/aclnnFusedMulAddN/gen_cases.py - 25464–25465:experimental/math/fused_mul_add_n/tests/st/torch/compare.py - 25467–25469:experimental/math/fused_mul_add_n/tests/st/torch/golden.py - 25471、25473、25476、25488、25490–25491、25493、25496–25497:experimental/math/fused_mul_add_n/tests/st/torch/test.py - 25498–25499:experimental/math/fused_mul_add_n/tests/ut/op_api/test_aclnn_fused_mul_add_n.cpp - 25500–25501:experimental/math/fused_mul_add_n/tests/ut/op_host/test_fused_mul_add_n_infershape.cpp - 25502–25503:experimental/math/fused_mul_add_n/tests/ut/op_host/test_fused_mul_add_n_tiling.cpp - 25505–25509、25511:experimental/math/fused_mul_add_n/tests/ut/op_kernel/test_fused_mul_add_n.cpp ### FusedMulAddN 正式目录(9 条) - 27114–27118:math/fused_mul_add_n/examples/test_geir_fused_mul_add_n.cpp - 27119–27120:math/fused_mul_add_n/tests/ut/op_host/arch35/test_fused_mul_add_n_tiling_arch35.cpp - 27121–27122:math/fused_mul_add_n/tests/ut/op_host/test_fused_mul_add_n_infershape.cpp ### HistogramV2(16 条) - 27228–27232:math/histogram_v2/examples/test_geir_histogram_v2.cpp - 27233:math/histogram_v2/tests/assets/golden.py - 27234–27235:math/histogram_v2/tests/ut/op_api/test_aclnn_histc.cpp - 27236–27237:math/histogram_v2/tests/ut/op_host/arch22/test_histogram_v2_tiling.cpp - 27238–27239:math/histogram_v2/tests/ut/op_host/arch35/test_histogram_v2_tiling.cpp - 27240–27241:math/histogram_v2/tests/ut/op_host/test_histogram_v2_infershape.cpp - 27242–27243:math/histogram_v2/tests/ut/op_kernel/test_histogram_v2.cpp ### LinSpace(14 条) - 27406–27410:math/lin_space/examples/test_geir_lin_space.cpp - 27411–27412:math/lin_space/tests/ut/op_api/test_aclnn_linspace.cpp - 27413–27415:math/lin_space/tests/ut/op_host/test_lin_space_infershape.cpp - 27416–27417:math/lin_space/tests/ut/op_host/test_lin_space_tiling.cpp - 27418–27419:math/lin_space/tests/ut/op_kernel/test_lin_space.cpp ### Range(8 条) - 27678–27679:math/range/tests/ut/op_api/test_aclnn_arange.cpp - 27680–27681:math/range/tests/ut/op_api/test_aclnn_range.cpp - 27682–27683:math/range/tests/ut/op_host/arch35/test_range_tiling_arch35.cpp - 27684–27685:math/range/tests/ut/op_host/test_range_infershape.cpp See merge request: cann/ops-math!5043 | 2 months ago | |
OneHot,ConfusedTransposeD,FusedMulAddN等3个算子infershape&inferDataType缺失补充 Co-authored-by: tianyu52<tianyu52@huawei.com> # message auto-generated for no-merge-commit merge: !6617 merge feat/rt2-infer-4ops into master OneHot,ConfusedTransposeD,FusedMulAddN等3个算子infershape&inferDataType缺失补充 Created-by: tianyu52 Commit-by: tianyu52 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> OneHot,ConfusedTransposeD,FusedMulAddN等3个算子infershape&inferDataType缺失补充 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> UT/ST ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6617 | 23 days ago | |
feat: FusedMulAddN、DynamicStitch 新增 ascend960dt 支持 Co-authored-by: chendunyang<chendunyang1@huawei.com> # message auto-generated for no-merge-commit merge: !6331 merge feat/ascend960dt-operator-support-20261013 into master feat: FusedMulAddN、DynamicStitch 新增 ascend960dt 支持 Created-by: qq_37913898 Commit-by: chendunyang Merged-by: cann-robot Description: ## 描述 为 FusedMulAddN、DynamicStitch 新增 ascend960dt 注册和二进制配置,复用现有 arch35 kernel/tiling 实现。 - 算子 CMake 补充 ascend960dt → arch35 映射,*_def.cpp 复用 950 的 AICore 配置。 - 从各自 ascend950 目录复制 JSON 和 simplified-key 配置,保持 dtype/属性支持范围一致。 - ascendc_config.json 为 FusedMulAddN 增加 960DT,保留 auto_sync=false。 - DynamicStitch 的算子级 tiling 准入显式接受 DAV_9201,保留原 regbase 判断;不扩大公共 helper 的影响范围。 ## 关联的Issue ## 测试 - JSON 语法、950/960DT 配置语义一致性及 git diff --check 已通过。 - 已同步最新主干并保留 ascend350 与 ascend960dt 支持,保持单提交 6bfed595c848cfe2a7d5a1f5a24a6fe6a91ddcfe;重新评论 compile 后 CI 全部通过(含 SCA、pre-commit、编译、UT 和冒烟):https://gitcode.com/CANN/ops-math/actions/runs/60a9d0b56ba14e55a3e95e1bb1183041 。 - 未进行本地编译或额外实机验证。 ## 文档更新 无。 ## 类型标签 - [x] 新特性 - [x] 其他:构建与平台配置 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-math!6331 | 30 days ago | |
fix: 移除 confusion_transpose_d/fused_mul_add_n/histogram_v2 不必要的workspace分配 Co-authored-by: yifangao<gaoyifan20@huawei.com> # message auto-generated for no-merge-commit merge: !5335 merge workspace-remove-1 into master fix: 移除 confusion_transpose_d/fused_mul_add_n/histogram_v2 不必要的workspace分配 Created-by: yifangao Commit-by: yifangao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> arch35(Ascend 950)路径下, confusion_transpose_d、fused_mul_add_n、histogram_v2 的 kernel 均未实际读写 workspace,tiling 阶段的申请属无效内存占用,统一归零以降低运行时内存开销: - **confusion_transpose_d**:新增 DEFAULT_WORKSPACE_SIZE = 0,在复用的 Transpose tiling 返回后显式覆盖 workspace(Transpose 内部固定写 16MB);UT 期望值 16777216 → 0 - **fused_mul_add_n**:常量 WORKSPACE_SIZE(32)更名为 DEFAULT_WORKSPACE_SIZE 并置 0;UT 期望值 32 → 0 - **histogram_v2**:base tiling 固定 16MB 预留归零;通用 tiling 仅 310 SoC(DAV_2002,多核同步/分核暂存需要)保留 sysWorkspaceSize + userWorkspaceSize,其余架构置 0;SIMT tiling 删除固定 16MB,直接置 0 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3216 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 冒烟: obp: http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260919_002401873 David: http://7.215.10.221/scheduler/alljobs?length=100&isalljobs=true&search=20260918_141440375 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5335 | 1 month ago | |
feat: 新增mul_addn融合规则MulAddNPass(落位fused_mul_add_n) Co-authored-by: wangxun21<wangxun21@huawei.com> # message auto-generated for no-merge-commit merge: !6353 merge mul_addn_fusion_pass into master feat: 新增mul_addn融合规则MulAddNPass(落位fused_mul_add_n) Created-by: wangxun21 Commit-by: wangxun21 Merged-by: cann-robot Description: ## 描述 将 canndev 旧框架融合规则 MulAddNPass 迁移至 ops-math 新 Pass 框架(REG_FUSION_PASS + ES 接口),落位 math/fused_mul_add_n/(两输入主场景目标算子目录): - **两输入路径**(无平台限制,与旧 pass 一致): Mul(x, 标量或(1,)侧) → AddN 融合为 FusedMulAddN; - **多输入路径**:N × Mul + AddN(N∈(2,16])融合为 MulAddn;两路径共 15 个 pattern; - 保留旧实现全部语义约束:Mul 出度==1 校验、dtype/shape/维度校验、多输入平台门控(按仓内先例 d8370277f 改用 NpuArch 判别,白名单 {DAV_2201},等价于旧实现的 Ascend910B / Ascend910_93); - 全部源/目标节点(Mul/AddN/FusedMulAddN/MulAddn)均以 CompliantNodeBuilder 构建:MulAddn 不使用其生成的 es 接口,pass 不依赖其他算子目录的 proto,单算子构建 --ops=fused_mul_add_n 自包含可编译; - 注册方式 REG_FUSION_PASS(MulAddNPass).Stage(CompatibleInherited),与旧内置 pass 同名顶替;含 CANN 9.0.0 编译期宏隔离 + 运行期弱符号版本守卫。 改动文件(3 个,全部位于 math/fused_mul_add_n/;add_all_modules_sources 自动收集 op_graph 与 UT,无需 CMakeLists 变更): | 文件 | 说明 | |---|---| | op_graph/fusion_pass/mul_addn_fusion_pass.h | pass 类声明(35 行) | | op_graph/fusion_pass/mul_addn_fusion_pass.cpp | pass 实现:15 pattern、两路径分派校验与替换图构建、NpuArch 平台门控、注册 | | tests/ut/op_graph/test_mul_addn_fusion_pass.cpp | UT 13 用例(含 rtGetSocSpec 弱符号 stub,按 ASCEND_NPU_ARCH 注入架构) | ## 关联的Issue 无(canndev 旧框架融合规则迁移开源任务) ## 测试 - UT:bash build.sh --opgraph -u --ops=fused_mul_add_n -j16,**13/13 PASSED**(单算子构建自包含验证);全量 --opgraph 插件编译通过; - 端到端(CANN 9.0.0 + Ascend950PR_9589 实机验证,pass 落位 mul_addn 目录时期):pass 随算子包注册生效,融合改图成功,te_fusedmuladdn kernel 实机 launch,数值 golden 比对 max diff = 0; - 负向对照:卸载算子包后 pass 不注册、不融合,退化为 te_mul + te_addn 双 kernel 执行,数值仍全部正确。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6353 | 26 days ago | |
feat: FusedMulAddN、DynamicStitch 新增 ascend960dt 支持 Co-authored-by: chendunyang<chendunyang1@huawei.com> # message auto-generated for no-merge-commit merge: !6331 merge feat/ascend960dt-operator-support-20261013 into master feat: FusedMulAddN、DynamicStitch 新增 ascend960dt 支持 Created-by: qq_37913898 Commit-by: chendunyang Merged-by: cann-robot Description: ## 描述 为 FusedMulAddN、DynamicStitch 新增 ascend960dt 注册和二进制配置,复用现有 arch35 kernel/tiling 实现。 - 算子 CMake 补充 ascend960dt → arch35 映射,*_def.cpp 复用 950 的 AICore 配置。 - 从各自 ascend950 目录复制 JSON 和 simplified-key 配置,保持 dtype/属性支持范围一致。 - ascendc_config.json 为 FusedMulAddN 增加 960DT,保留 auto_sync=false。 - DynamicStitch 的算子级 tiling 准入显式接受 DAV_9201,保留原 regbase 判断;不扩大公共 helper 的影响范围。 ## 关联的Issue ## 测试 - JSON 语法、950/960DT 配置语义一致性及 git diff --check 已通过。 - 已同步最新主干并保留 ascend350 与 ascend960dt 支持,保持单提交 6bfed595c848cfe2a7d5a1f5a24a6fe6a91ddcfe;重新评论 compile 后 CI 全部通过(含 SCA、pre-commit、编译、UT 和冒烟):https://gitcode.com/CANN/ops-math/actions/runs/60a9d0b56ba14e55a3e95e1bb1183041 。 - 未进行本地编译或额外实机验证。 ## 文档更新 无。 ## 类型标签 - [x] 新特性 - [x] 其他:构建与平台配置 ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-math!6331 | 30 days ago | |
产品名变更 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !5912 merge master into master 产品名变更 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> AI处理器对应的产品型号名称更新 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [#3258](https://gitcode.com/cann/ops-math/issues/3258) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> *.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5912 | 1 month ago |
FusedMulAddN
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | × |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:将mul和addn算子进行融合,要求addn的n为2,mul的其中一个输入必须是scalar或者只包含一个数的tensor。
-
计算公式:
yi=x1i×x3[0]+x2iy_i = x1_i \times x3[0]+ x2_i yi=x1i×x3[0]+x2i
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x1 | 输入 | 公式中的输入x1 | INT16, INT32, FLOAT, FLOAT16, BFLOAT16 | ND |
| x2 | 输入 | 公式中的输入x2 | INT16, INT32, FLOAT, FLOAT16, BFLOAT16 | ND |
| x3 | 输入 | 公式中的输入x3 | INT16, INT32, FLOAT, FLOAT16, BFLOAT16 | ND |
| y | 输出 | 公式中的y | INT16, INT32, FLOAT, FLOAT16, BFLOAT16 | ND |
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_fused_mul_add_n | 通过算子IR构图方式调用FusedMulAddN算子 |