| 修复issue的问题 Co-authored-by: sakuraqqz<furao15@h-partners.com> # message auto-generated for no-merge-commit merge: !6812 merge master into master 修复issue的问题 Created-by: sakuraqqz Commit-by: sakuraqqz Merged-by: cann-robot Description: ## 描述 本 PR 修复 6 个算子问题,均为 Bug 修复(含 1 项文档修正): 1. **is_inf 尾块越界读写(#3925)**:数据长度不足 32B 对齐时,尾块原先按 32B 整倍搬运导致 GM 越界读/写。修复为整块用 DataCopy、尾块用 DataCopyPad 按真实字节搬运,ComputePerCore 尾块输出按真实计数写出。math/is_inf/op_kernel/is_inf.h。 2. **addcmul value=NaN 走错快路径(#3894)**:IsEqualToOne 对 NaN 判等为 true(所有比较均 false 取反),导致 value=NaN 时误走 AxpyV2 快路径、缺失 value 项。修复为显式排除 NaN。math/addcmul/op_api/aclnn_addcmul.cpp。 3. **cdist 非法 shape 返回码(#3929)**:out 形状与推导不匹配时返回内部空指针错误 561103,修复为在 GetWorkspaceSize 增加 out 期望形状校验,返回标准参数错误 161002。math/cdist/op_api/aclnn_cdist.cpp。 4. **div 非法参数返回码(#3962)**:日志错误码与返回码不一致,统一返回 161002。math/div/op_api/aclnn_div.cpp。 5. **VarMean 文档矛盾(#4182)**:中英文档 self 维度列由 1-8 修正为 0-8(与「shape 支持 0 到 8 维」及 meanOut/varOut 的 0-8 保持一致);参数表 varOut/meanOut 行序与原型(varOut 为第 5 参、meanOut 为第 6 参)对齐。math/reduce_var/docs/。 6. **LinSpace legacy tiling 丢失 INT64 num 精度(#3347):** LinSpaceGetConstValue 的 DT_INT64 分支先将 int64_t 经 float 转换,num=16777219 被舍入为 16777220,与 InferShape 输出维度不一致;修复为直接读取 int64 数值、经 double 无损保留。math/lin_space/op_host/lin_space_tiling.cpp。 ## 关联的Issue - https://gitcode.com/cann/ops-math/issues/3925 - https://gitcode.com/cann/ops-math/issues/3894 - https://gitcode.com/cann/ops-math/issues/3929 - https://gitcode.com/cann/ops-math/issues/3962 - https://gitcode.com/cann/ops-math/issues/4182 - https://gitcode.com/cann/ops-math/issues/3347 ## 测试 910B3 / CANN 9.3.0 上板验证(2026-10-29): - **is_inf**:尾块用例长度 17/25/31/33/40(非 32B 对齐),尾部放置 inf/-inf/nan,输入输出 buffer 后 64B 金丝雀检测越界,5 组全部 PASS 且无越界读写。 - **addcmul**:value=NaN → out=NaN(修复前误得 7.0);value=1.0/2.0 回归正常。 - **cdist**:out 形状不匹配返回 161002,合法形状返回 0。 - **div**:shape 不匹配/非法 mode 均返回 161002。 - **VarMean**:issue 复现脚本实测命中 0 处(纯文档改动,无需上板)。 - **LinSpace**:tiling data 中 num=16777219 保留、InferShape 输出 [16777219](num=17 对照),Host UT 6/6 PASS,基线回归证实旧实现舍入为 16777220。 ## 文档更新 - math/reduce_var/docs/aclnnVarMean.md、math/reduce_var/docs/aclnnVarMean_en.md(维度范围与参数顺序修正)。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6812 | 14 days ago |
| Math目录下整改test_example规范命名 Co-authored-by: cjz_<chenjunzhuo@huawei.com> # message auto-generated for no-merge-commit merge: !5769 merge fix_example_0917 into master Math目录下整改test_example规范命名 Created-by: jiangjiawei Commit-by: cjz_ Merged-by: cann-robot Description: ## 描述 math目录下部分"缺失 example"的接口中已有测试文件,仅因命名与接口名对不上被误判缺失 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3212 ## 测试 修改test_example命名,无需测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5769 | 1 month ago |
| fix(var-mean): allow bfloat16 on supported platforms Co-authored-by: zhangqijia<zhangqijia1@h-partners.com> # message auto-generated for no-merge-commit merge: !7032 merge fix/issue-4172 into master fix(var-mean): allow bfloat16 on supported platforms Created-by: gcw_SUaZx3UQ Commit-by: zhangqijia Merged-by: cann-robot Description: ## 描述 VarMean 原先仅在 RegBase 平台放行 BF16,导致 A2/A3 合法输入被拒。改用与 Var 相同的 GetDtypeSupportListV2,保留旧平台限制。同步更新 BF16 用例并覆盖 A2、A3、950、910 及两种 keepdim。 ## 关联的Issue Fixes #4172 https://gitcode.com/cann/ops-math/issues/4172 ## 测试 使用真实前端实现和官方平台 stub 做 5 个产品 × 4 个类型的 Host 门禁回归:原始代码在 A2/A3 的 BF16 断言失败,修复后全部通过。完整 VarMean API 测试已编译;本机公共测试环境中原始代码和修复代码均为 24/38 通过,14 条涉及后端构图的用例返回 561103,因此不宣称完整 API 套件通过。未完成 NPU 两个输出的数值验证,设备回归需覆盖 BF16、FP16、FP32 与 correction 边界。 本 PR 改动的 C/C++ 文件已按 clang-format 18.1.8 完整格式化;完整 pre-commit(含 clang-format)及 git diff --check 通过。 ## 文档更新 无 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7032 | 10 days ago |
| reduce all Co-authored-by: lu-yukun<luyukun4@h-partners.com> # message auto-generated for no-merge-commit merge: !888 merge reduce_final into master reduce all Created-by: lu-yukun Commit-by: lu-yukun Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!888 | 9 months ago |
| feat: vector算子批量适配ascend960pr(DV122)平台 Co-authored-by: biabu111<hebaojing1@huawei.com> # message auto-generated for no-merge-commit merge: !6663 merge feat/dv122-ascend960pr-adaptation into master feat: vector算子批量适配ascend960pr(DV122)平台 Created-by: biabu111 Commit-by: biabu111 Merged-by: cann-robot Description: ## 描述 DV122(Ascend960PR / dav_9202 / Ascend960PR_969A1)vector 算子批量适配。参照 ascend960dt(DAV_9201) 既有适配模式,为 vector 算子清单内 66 个算子补齐 ascend960pr 支持,适配原则:9201 支持的能力 9202 均支持。 **注册级适配(66 算子):** - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 "ascend960pr",SUPPORT_TILING_DIR 按位插入对应 arch35 - op_host/*_def.cpp:AICore().AddConfig("ascend960pr", <960dt 同款配置>) - op_host/config/ascend960pr/:二进制配置(*_binary.json / *_simplified_key.ini,复制自 ascend960dt,与 960dt 内容一致) - op_kernel*/CMakeLists.txt:COMPUTE_UNITS 追加 ascend960pr(arch92 kernel 入口同步生效) - scripts/kernel/binary_config/ascendc_config.json:compute_units 与 compile_options 补齐 **代码级补齐(9201 → 9201||9202):** - tiling/aclnn/infershape/fusion_pass/kernel 中 NpuArch::DAV_9201、__NPU_ARCH__ == 9201、"Ascend960DT" 等 960 平台门禁补齐 DAV_9202 / 9202 / "Ascend960PR" - 覆盖 concat/tanh_grad/slice/strided_slice/expand/tensor_equal/lin_space/range 等的 tiling/aclnn/graph_infer/fusion_pass 平台门禁(家族特性判定依据:gather_v2 适配提交中 isAscend96_ = DAV_9201||DAV_9202、unsorted_segment_sum 注释"ascend960dt/ascend960pr(DAV_9201/DAV_9202) 平台判定,用于 960 专属特性(ScatterDataCopy 等)的运行时开关") ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4682 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟、ut、st已通过 <!--描述进行了哪些测试来验证你的改动。--> - CANN 9.3.0 工具链 --soc=ascend960pr 构建 19 个抽样算子(覆盖全部修改类型):宿主侧(def/tiling/infershape/aclnn)100% 编译通过,0 错误 - 构建日志确认正确消费新增的 config/ascend960pr/*_binary.json - --soc=ascend960dt 同算子集构建行为一致,无回归 - 一致性审计:范围内 960dt-without-960pr 注册缺口 0;修改过的 CMakeLists SUPPORT_COMPUTE_UNIT/TILING_DIR 位置对齐 0 问题;ascendc_config.json 语法有效 - 注:opc 二进制生成阶段因当前工具链缺 Ascend960PR_969A1 平台数据无法本地执行,需在 CI(含 960PR 平台数据的工具链)完成二进制编译与上板验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-math!6663 | 2 days ago |
| perf(reduce_var): AR 两趟 VF 分档优化,group 计数改为 kernel 侧计算 Co-authored-by: andong_hw<andong2@huawei.com> # message auto-generated for no-merge-commit merge: !6210 merge perf-reduce-var-twopass-v3 into master perf(reduce_var): AR 两趟 VF 分档优化,group 计数改为 kernel 侧计算 Created-by: andong_hw Commit-by: andong_hw Merged-by: cann-robot Description: ## 描述 本次改动包含四部分: 1. 精简 tilingdata 并将 group 计数计算下移到 kernel - 删除 ReduceVarTilingData::reduceCntEachGroupR[MAX_CORE_COUNT] 与 MAX_CORE_COUNT(结构体 1376B → 352B); - tiling 侧删除 SetReduceCntEachGroupR/ComputeInnerUbRCnt 及相关成员; - kernel 侧新增 CalcInnerUbRCnt()/CalcGroupReduceCnt() 闭式公式:Init() 中计算当前核所在 group 的 groupReduceCnt_,phase2 按需计算每个 group 的真实规约 R 元素数,不再依赖 tilingdata 中的逐 group 数组。 2. 优化 AR 两趟 VF 实现 - VFMeanVarTwoPassAR 改为三段分档:RNum <= VL 保持原 LessVL;VL < RNum <= 2VL 新增 LessTwoVL(纯寄存器、无 LocalMemBar);RNum > 2VL 新增 Common(quotient 对半生成 partial,每个 scope 仅一次 LocalMemBar 后折半,var 用 DIST_BRC_B32 广播 mean); - 修复新增分支中 var 项多乘一次 varScale 的问题。 3. 代码规整与 VF 规则对齐 - Common 尾块循环(tailFloor + tailCeil-tailFloor)合并为单循环,用 UpdateMask 自更新计数,末次自动收窄为余数掩码; - VF 内所有 for 循环统一从 0 开始,满足 regbase VF 编程硬约束。 4. scratch 独立化 - VFMeanVarTwoPassAR/Common 增加 partBufLocal 参数:partBuf 独占 AR 两趟路径下空闲的 welford 缓存 tMeanTensor_,meanBuf 独占 dichotomyAddLocal,消除共享缓冲容量叠加的顾虑,并补充前置条件与容量上界注释。 ## 关联的Issue Closes #3468 https://gitcode.com/cann/ops-math/issues/3468 ## 测试 - ascend950 编译通过:bash build.sh --pkg --ops=reduce_var --soc=ascend950 -j32; - op_host UT:bash build.sh -u --ophost --soc=ascend950 --ops=reduce_var --gtest_filter='ReduceVar*',2 用例 PASS; - ttk kernel 精度验证(-c=true -b=release -d=false --plugin .../tests/assets,运行加载 vendors/custom_math 安装包): - 新增/变更用例共 39 条,覆盖 twopass 三个分支(R=32/64/65/100/128/129/200/3000,fp16/bf16/fp32)与 group 场景(AR/ARA/ARAR,groupR=4/5/9/10/11/55/56,innerUbRCnt=1/8); - 分组复跑全部通过:边界小 shape 13/13、大 shape 批次 10/10、fp16 批次 14/14、group 专项 7/7、Common 专项 13/13; - Common 尾块循环合并版本较拆分版本实测(seed 42、run=5、两次):bf16 (8192,256) 约 -19%、fp16 (362,512) 约 -6%~-8%,其余在 ±2% 内,无回退;scratch 独立化后性能持平。 ## 文档更新 无。 ## 类型标签 - [x] 性能优化 See merge request: cann/ops-math!6210 | 1 month ago |
| fix(reduce_var,reduce_std_v2): 修正 TilingParse 判空日志并去重重复轴 Co-authored-by: andong_hw<andong2@huawei.com> # message auto-generated for no-merge-commit merge: !7120 merge fix/remove-null-context-log into master fix(reduce_var,reduce_std_v2): 修正 TilingParse 判空日志并去重重复轴 Created-by: andong_hw Commit-by: andong_hw Merged-by: cann-robot Description: ## 描述 1. TilingParse 的 context 判空仍保留 OP_CHECK_IF,仅将日志参数中的 context->GetNodeName() 替换为固定算子名,并输出 context is null,避免 context 为空时发生空指针解引用。此处不是改为普通 if,也没有删除判空日志。 2. 公共 tiling 未对重复 dim 去重,dim=[1,1] 会让 N 重复累乘,导致 mean/var 结果错误。在 MakeWrapDim 中增加 std::unique,并在计算 N 前先调用 MakeWrapDim。 ## 关联的Issue Closes #4537 ## 修改内容 - math/reduce_var/op_host/arch35/reduce_var_tiling.cpp - 判空日志保留 OP_CHECK_IF,日志固定算子名为 ReduceVar,日志内容为 context is null - MakeWrapDim 排序后去重 - ReduceVarGetInputParams 提前调用 MakeWrapDim,保证 ReduceVarCalcInput 使用去重后的 axes - math/reduce_std_v2/op_host/arch35/reduce_std_v2_tiling_arch35.cpp - 判空日志保留 OP_CHECK_IF,日志固定算子名为 ReduceStdV2,日志内容为 context is null - math/reduce_var/tests/ut/op_host/arch35/test_var_tiling.cpp - 新增重复 dim 的 tiling UT ## 验证 - bash build.sh --opkernel --soc=ascend950 --ops=reduce_var,reduce_std_v2 -j16 编译通过 - bash build.sh -u --ophost --soc=ascend950 --ops=reduce_var --gtest_filter='ReduceVarTiling*' -j16 通过 See merge request: cann/ops-math!7120 | 8 days ago |
| feat: vector算子批量适配ascend960pr(DV122)平台 Co-authored-by: biabu111<hebaojing1@huawei.com> # message auto-generated for no-merge-commit merge: !6663 merge feat/dv122-ascend960pr-adaptation into master feat: vector算子批量适配ascend960pr(DV122)平台 Created-by: biabu111 Commit-by: biabu111 Merged-by: cann-robot Description: ## 描述 DV122(Ascend960PR / dav_9202 / Ascend960PR_969A1)vector 算子批量适配。参照 ascend960dt(DAV_9201) 既有适配模式,为 vector 算子清单内 66 个算子补齐 ascend960pr 支持,适配原则:9201 支持的能力 9202 均支持。 **注册级适配(66 算子):** - CMakeLists.txt:SUPPORT_COMPUTE_UNIT 追加 "ascend960pr",SUPPORT_TILING_DIR 按位插入对应 arch35 - op_host/*_def.cpp:AICore().AddConfig("ascend960pr", <960dt 同款配置>) - op_host/config/ascend960pr/:二进制配置(*_binary.json / *_simplified_key.ini,复制自 ascend960dt,与 960dt 内容一致) - op_kernel*/CMakeLists.txt:COMPUTE_UNITS 追加 ascend960pr(arch92 kernel 入口同步生效) - scripts/kernel/binary_config/ascendc_config.json:compute_units 与 compile_options 补齐 **代码级补齐(9201 → 9201||9202):** - tiling/aclnn/infershape/fusion_pass/kernel 中 NpuArch::DAV_9201、__NPU_ARCH__ == 9201、"Ascend960DT" 等 960 平台门禁补齐 DAV_9202 / 9202 / "Ascend960PR" - 覆盖 concat/tanh_grad/slice/strided_slice/expand/tensor_equal/lin_space/range 等的 tiling/aclnn/graph_infer/fusion_pass 平台门禁(家族特性判定依据:gather_v2 适配提交中 isAscend96_ = DAV_9201||DAV_9202、unsorted_segment_sum 注释"ascend960dt/ascend960pr(DAV_9201/DAV_9202) 平台判定,用于 960 专属特性(ScatterDataCopy 等)的运行时开关") ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4682 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 冒烟、ut、st已通过 <!--描述进行了哪些测试来验证你的改动。--> - CANN 9.3.0 工具链 --soc=ascend960pr 构建 19 个抽样算子(覆盖全部修改类型):宿主侧(def/tiling/infershape/aclnn)100% 编译通过,0 错误 - 构建日志确认正确消费新增的 config/ascend960pr/*_binary.json - --soc=ascend960dt 同算子集构建行为一致,无回归 - 一致性审计:范围内 960dt-without-960pr 注册缺口 0;修改过的 CMakeLists SUPPORT_COMPUTE_UNIT/TILING_DIR 位置对齐 0 问题;ascendc_config.json 语法有效 - 注:opc 二进制生成阶段因当前工具链缺 Ascend960PR_969A1 平台数据无法本地执行,需在 CI(含 960PR 平台数据的工具链)完成二进制编译与上板验证 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-math!6663 | 2 days ago |
| Math目录下整改test_example规范命名 Co-authored-by: cjz_<chenjunzhuo@huawei.com> # message auto-generated for no-merge-commit merge: !5769 merge fix_example_0917 into master Math目录下整改test_example规范命名 Created-by: jiangjiawei Commit-by: cjz_ Merged-by: cann-robot Description: ## 描述 math目录下部分"缺失 example"的接口中已有测试文件,仅因命名与接口名对不上被误判缺失 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3212 ## 测试 修改test_example命名,无需测试 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!5769 | 1 month ago |
| docs: add English translations for markdown files Co-authored-by: jenny_xiang<jenny.xiang@huawei.com> # message auto-generated for no-merge-commit merge: !7113 merge docs/add-english-translations into master docs: add English translations for markdown files Created-by: jenny_xiang Commit-by: jenny_xiang Merged-by: cann-robot Description: ## 描述 新增仓库Markdown文档英文译稿(第二批,共409个文件):第一批(已合入)之外的其余全部译稿,覆盖conversion、examples、ge、math、random各类算子README译稿,以及CHANGELOG_en.md、.gitcode PR模板英文版等。 本批内全部仓内链接均指向master已有文件(含第一批已合入的21+2篇译稿),合入后本仓432篇英文文档全部就位,链接完整生效。 本批同时包含4篇基于最新源文档的增量更新(math/ada_cast、math/prod_force_se_a、math/sinkhorn、math/xlogy,对应上游近期文档变更)。 ## 关联的Issue 无 ## 测试 文档类变更,无需算子测试;已通过链接有效性校验(本批全部相对链接仅指向master已有文件,无指向本PR外未提交文件的链接),并完成逐篇翻译规范自查与语义校对(含支持状态表、限定词、术语、数值符号核对)。 ## 文档更新 新增409个英文译稿文件(*_en.md / .en-US.md),不修改任何现有文件。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!7113 | 9 days ago |