| Files | Last commit | Last update |
|---|---|---|
master翻译合入 Co-authored-by: caiwenwen<caiwenwen6@h-partners.com> # message auto-generated for no-merge-commit merge: !6751 merge master into master master翻译合入 Created-by: caiwenwen Commit-by: caiwenwen Merged-by: cann-robot Description: ## 描述 合入math仓翻译的内容 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/4170 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 docs/context,aclnn等商发文档 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6751 | 13 days ago | |
feat: 补充部分算子缺失的 aclnn API 示例 Co-authored-by: zhangqijia<zhangqijia1@h-partners.com> # message auto-generated for no-merge-commit merge: !4575 merge feat/issue-2281-aclnn-examples into master feat: 补充部分算子缺失的 aclnn API 示例 Created-by: gcw_SUaZx3UQ Commit-by: zhangqijia Merged-by: cann-robot Description: ## 描述 补充 Issue #2281 中归属 ops-math 的 10 个算子、12 个 aclnn API 调用示例: - 新增 8 个缺失的 aclnn API 示例。 - 将已有的 4 个示例调整为 CI 可识别的 test_aclnn_*.cpp 命名,并修正 BatchNormStats 示例文件名。 - 根据 Cdist 已有 AscendC kernel 实现,完善其 README 的产品支持、功能公式、参数及约束说明。 - 更新相关算子 README 中的调用入口。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/2281 ## 测试 ## 文档更新 - 更新 10 个算子目录下的 README.md,补充 aclnn 示例链接及对应 API 文档入口。 - 重写 Cdist README,删除“仅包含 aclnn 接口”的过期说明,并按仓内算子格式补充产品支持、功能、参数和约束。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4575 | 2 months ago | |
fix(reduce_nansum): 0维标量输入按NaN->0语义处理,与向量路径一致(#3983) Co-authored-by: bjx<bjx@localhost> # message auto-generated for no-merge-commit merge: !6771 merge fix/reduce-nansum-scalar-nan into master fix(reduce_nansum): 0维标量输入按NaN->0语义处理,与向量路径一致(#3983) Created-by: doufloat Commit-by: bjx Merged-by: cann-robot Description: ## 描述 **问题** aclnnReduceNansum 对接口文档承诺"将 tensor 中 NaN 处理为 0 后求和"且 self 支持 0-8 维,但 rank-0 标量输入走了 L0 提前返回分支,NaN 被原样穿透: - 输入 FLOAT32 标量 NaN(shape 为 {})、dim=[0] 时,输出仍为 NaN; - 对照单元素向量 [1](rank=1)相同 NaN 输入,内核 CopyIn 的 Compare+Select 预处理生效,输出为 0。 同一算子标量分支与向量分支统计语义不一致,违反资料的无条件 NaN→0 承诺。 **根因** math/reduce_nansum/op_api/reduce_nansum.cpp 的 ReduceNansum 对 GetViewShape().GetDimNum() == 0 直接 return self,跳过了内核路径中内嵌的 NaN→0 预处理(reduce_nansum_apt.cpp 注释自述的 Compare(x,x,EQ)+Select 流程)。 **方案** 标量分支保留"不调用算子"的原有结构,浮点类型(FLOAT/FLOAT16/BF16,即 L0 实际承载的类型)先经 l0op::NanToNum(self, nan=0, posinf=+inf, neginf=-inf) 将 NaN 替换为 0(±inf 保持语义不变)再返回;整型标量无 NaN 概念,返回原值不变。顺带清除不应入库的 [DIRECT DEBUG] printf 调试残留。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3983 ## 测试 - 环境:Ascend 910B2,CANN 9.2.0。 - 端到端真机验证(符号覆盖法):将 PR 的 reduce_nansum.cpp 与基线版分别单独编译为共享库,以 LD_PRELOAD 仅覆盖 l0op::ReduceNansum 符号(规避与内置库的全量重复注册)后实跑 issue 复现程序: - 基线覆盖:FLOAT32 标量 NaN → 输出 NaN(缺陷复现),[1] 向量 NaN → 0; - 修复覆盖:**FLOAT32 标量 NaN → 输出 0**,[1] 向量 NaN → 0(原行为保持),标量 5.0 → 5.0(非 NaN 值不受影响)。 - 单测:math_op_api_ut(--ops=reduce_nansum -u --opapi --soc=ascend910b)**23/23 通过**,含判别用例 ascend910B2_case_test_scalar_nan_path:浮点标量(FLOAT/FLOAT16/BF16)断言 L0 不再原样返回输入 tensor,整型标量断言仍返回原值。回归有效性双向验证:将修复代码回退到基线后,该用例如预期失败。 - 编译验证:分支当前状态 bash build.sh --ops=reduce_nansum --soc=ascend910b -j16 全量构建通过(Build binary success)。 - pre-commit:全部通过(trailing-whitespace、end-of-file、clang-format、codespell、OAT 合规检查)。 ## 文档更新 不涉及。资料已承诺 NaN→0 与零维支持,本次使实现与资料一致。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他(请说明) See merge request: cann/ops-math!6771 | 12 days ago | |
fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Co-authored-by: chenyifeng<chenyifeng27@h-partners.com> # message auto-generated for no-merge-commit merge: !6606 merge fix_errorNum_1021 into master fix: E*9****内部错误码整改为正式语义码并保留内部异常EZ9999上报 Created-by: chen_0715 Commit-by: chenyifeng Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次 PR 整改以下 43 个算子中非法使用的内部错误码(E*9****),使其符合错误码使用规范: - cholesky / complex / cross / cummax / cummin / cumprod / get_shape / histogram_v2 / is_finite / is_inf - kl_div_v2 / lin_space / log_add_exp / non_finite_check / pdist / polar / pows / radix_top_k - reduce_log_sum / reduce_log_sum_exp / reduce_max / reduce_mean / reduce_mean_with_count / reduce_min - reduce_nansum / reduce_std_with_mean / rfft1_d / search_sorted / signbit / sin / sinc / sinkhorn / topk - affine_grid / amp_update_scale / angle_v2 / arg_max_v2 / arg_min / arg_min_with_value / atan2 / bessel_i1e / cdist_grad - conversion/tril 改动原因:上述算子 op_host / op_api / op_graph 源码中存在裸 OP_LOGE (EZ9999 兜底上报)、 OP_CHECK_NULL_WITH_CONTEXT / OP_CHECK_NOTNULL (EZ9999 上报)等不符合错误码使用规范的上报路径,需按失败原因分类整改为正式语义码或内部透传。 采取的方法: - op_host 参数/输入校验类(shape / dtype / format / attr 值域等)裸 OP_LOGE → 正式语义宏(EZ0004 / EZ0008–EZ0038) - op_host 内部 API 失败类(平台能力查询、tiling API 失败等)→ OP_LOGE_WITHOUT_REPORT 透传,去掉 EZ9999 上报、保留日志 - OP_CHECK_NULL_WITH_CONTEXT (EZ9999)→ 显式空指针检查 + 正式码宏 - op_api OP_CHECK_NOTNULL (EZ9999)→ 显式检查 + OP_LOGE_WITHOUT_REPORT(ACLNN_ERR_INNER_NULLPTR) + 返回公共错误码 - op_api OP_LOGE(ACLNN_ERR_INNER_* / RUNTIME_ERROR) (561xxx / 361xxx)→ OP_LOGE_WITHOUT_REPORT ;正式参数码 ACLNN_ERR_PARAM_* (161xxx)保留 - 删除 CREATE_EXECUTOR 之后不可达的空指针死检查( CHECK_RET(executor.get()!=nullptr, ACLNN_ERR_INNER_CREATE_EXECUTOR) ,40 处) - op_graph(histogram_v2 / reduce_mean 融合 pass)E9 上报 → 正式码或透传 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/3977 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 43 算子 op_host / op_api / op_graph 全量编译通过,exit 0(910b + 950/arch35) - 本地增加ut测试130 用例全量通过(910b 83 + 950 47),日志级验证触发 78 次正式 EZ 错误码上报,覆盖 14 个正式错误码 - 原版 math_op_host_ut 300 用例全量通过,无回归 - 静态复扫:范围内 E*9**** 正式上报清零(残留均为 CHECK_RET 返回公共码 / 动态 return 等允许项) - 附:适配 CANN 9.3.0 atvoss 库 tiling key 编码变化,更新 reduce_max / reduce_mean_with_count 测试的 9 处 expectedTilingKey (官方 master 在 9.3.0 下同样失败,非本 PR 引入) ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6606 | 14 days ago | |
refactor: 将arch35算子kernel中MicroAPI接口统一迁移为Reg接口 Co-authored-by: tianqiguang<tianqiguang@huawei.com> # message auto-generated for no-merge-commit merge: !4187 merge master into master refactor: 将arch35算子kernel中MicroAPI接口统一迁移为Reg接口 Created-by: tianqiguang Commit-by: tianqiguang Merged-by: cann-robot Description: ## 描述 将 math 模块下 80+ 算子的 arch35 kernel 实现从 MicroAPI 接口迁移为 Reg(寄存器)接口,统一编程范式。 ### 改动范围 涉及算子: abs, abs_grad, add_n, adjacent_difference, arg_max_with_value, assign_add, assign_sub, atan2, bitwise_xor, cast, cdist, cdist_grad, ceil, complex_abs, cummin, cumsum, div, dot, exp, eye, floor, floor_div, floor_mod, fused_mul_add_n, grouped_bias_add_grad, inv, is_close, kth_value, lerp, lin_space, log, log1p, logical_or, mod, nan_to_num, neg, pow, power, reciprocal, reduce_all, reduce_any, reduce_log_sum_exp, reduce_nansum, reduce_prod, reduce_var, right_shift, rint, round, rsqrt, rsqrt_grad, sign, signbit, sinh, sort, sort_with_index, tanh, tanh_grad, tensor_equal, top_k_v2, trunc, truncate_div 等 ### 改动方式 - 将 MicroAPI 调用替换为等价 Reg API 调用 - 适配 arch35(ascend950)指令集特性 - 保持算子功能不变 ## 测试 - 涉及算子全量回归测试 ## 类型标签 - [x] 重构 ## 关联的Issue - #2295 See merge request: cann/ops-math!4187 | 3 months ago | |
fix(reduce_nansum): 0维标量输入按NaN->0语义处理,与向量路径一致(#3983) Co-authored-by: bjx<bjx@localhost> # message auto-generated for no-merge-commit merge: !6771 merge fix/reduce-nansum-scalar-nan into master fix(reduce_nansum): 0维标量输入按NaN->0语义处理,与向量路径一致(#3983) Created-by: doufloat Commit-by: bjx Merged-by: cann-robot Description: ## 描述 **问题** aclnnReduceNansum 对接口文档承诺"将 tensor 中 NaN 处理为 0 后求和"且 self 支持 0-8 维,但 rank-0 标量输入走了 L0 提前返回分支,NaN 被原样穿透: - 输入 FLOAT32 标量 NaN(shape 为 {})、dim=[0] 时,输出仍为 NaN; - 对照单元素向量 [1](rank=1)相同 NaN 输入,内核 CopyIn 的 Compare+Select 预处理生效,输出为 0。 同一算子标量分支与向量分支统计语义不一致,违反资料的无条件 NaN→0 承诺。 **根因** math/reduce_nansum/op_api/reduce_nansum.cpp 的 ReduceNansum 对 GetViewShape().GetDimNum() == 0 直接 return self,跳过了内核路径中内嵌的 NaN→0 预处理(reduce_nansum_apt.cpp 注释自述的 Compare(x,x,EQ)+Select 流程)。 **方案** 标量分支保留"不调用算子"的原有结构,浮点类型(FLOAT/FLOAT16/BF16,即 L0 实际承载的类型)先经 l0op::NanToNum(self, nan=0, posinf=+inf, neginf=-inf) 将 NaN 替换为 0(±inf 保持语义不变)再返回;整型标量无 NaN 概念,返回原值不变。顺带清除不应入库的 [DIRECT DEBUG] printf 调试残留。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3983 ## 测试 - 环境:Ascend 910B2,CANN 9.2.0。 - 端到端真机验证(符号覆盖法):将 PR 的 reduce_nansum.cpp 与基线版分别单独编译为共享库,以 LD_PRELOAD 仅覆盖 l0op::ReduceNansum 符号(规避与内置库的全量重复注册)后实跑 issue 复现程序: - 基线覆盖:FLOAT32 标量 NaN → 输出 NaN(缺陷复现),[1] 向量 NaN → 0; - 修复覆盖:**FLOAT32 标量 NaN → 输出 0**,[1] 向量 NaN → 0(原行为保持),标量 5.0 → 5.0(非 NaN 值不受影响)。 - 单测:math_op_api_ut(--ops=reduce_nansum -u --opapi --soc=ascend910b)**23/23 通过**,含判别用例 ascend910B2_case_test_scalar_nan_path:浮点标量(FLOAT/FLOAT16/BF16)断言 L0 不再原样返回输入 tensor,整型标量断言仍返回原值。回归有效性双向验证:将修复代码回退到基线后,该用例如预期失败。 - 编译验证:分支当前状态 bash build.sh --ops=reduce_nansum --soc=ascend910b -j16 全量构建通过(Build binary success)。 - pre-commit:全部通过(trailing-whitespace、end-of-file、clang-format、codespell、OAT 合规检查)。 ## 文档更新 不涉及。资料已承诺 NaN→0 与零维支持,本次使实现与资料一致。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他(请说明) See merge request: cann/ops-math!6771 | 12 days ago | |
aclnnReduceNansum A5新增算子 Co-authored-by: sunchun<sunchun4@h-partners.com> # message auto-generated for no-merge-commit merge: !3153 merge nansum2 into master aclnnReduceNansum A5新增算子 Created-by: sunchun Commit-by: sunchun Merged-by: cann-robot Description: ## 描述 aclnnReduceNansum A5新增算子 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/1949 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3153 | 4 months ago | |
aclnn确定性开关配置变更和产品名变更,简化md表格语法,删除冗余css样式 Co-authored-by: gitcode-chenjiao<chenjiao31@huawei.com> # message auto-generated for no-merge-commit merge: !6613 merge master into master aclnn确定性开关配置变更和产品名变更,简化md表格语法,删除冗余css样式 Created-by: gitcode-chenjiao Commit-by: gitcode-chenjiao Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> - aclnn确定性开关配置变更:aclrtCtxSetSysParamOpt改为aclrtSetSysParamOpt - 产品名变更 - 简化md表格语法,删除冗余css样式 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> [# 3833](https://gitcode.com/cann/ops-math/issues/3833) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ok ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> \*.md acl\*.md ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6613 | 18 days ago |
ReduceNansum
本目录仅包含ReduceNansum算子对应的aclnn接口;如您想要贡献该算子的Ascend C实现,请参考贡献流程。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_reduce_nansum | 通过aclnnReduceNansum接口方式调用ReduceNansum算子。 |