| Files | Last commit | Last update |
|---|---|---|
docs: 订正 bitwise_not、cholesky、cummin、topk 等 8 个算子资料及头文件注释 Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !6781 merge sync-1028 into master docs: 订正 bitwise_not、cholesky、cummin、topk 等 8 个算子资料及头文件注释 Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 本 PR 订正 8 个算子资料与头文件注释中与实现、产品支持情况不一致的描述。改动全部为文档(zh/en)与头文件注释,不涉及代码逻辑。 ### 改动原因 资料与头文件注释存在与实现、错误码表或产品支持情况互相矛盾的描述:dtype 列表漏项、产品支持范围与参数表结论不一致、参数语义描述错误、公式求和区间端点错误、退化点取值未声明等,逐条见「关联的Issue」。 ### 改动方法 1. **bitwise_not**( docs/aclnnBitwiseNot.md、aclnnBitwiseNot_en.md):self、out 补充数据类型支持描述,与资料及实现对齐(#3950)。 2. **bitwise_or**(docs/aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar.md、_en.md):self、other、selfRef补充数据类型支持描述,消除与产品支持情况分组的矛盾(#3995)。 3. **cdist_grad**(docs/aclnnCdistBackward.md、_en.md):新增说明——上述闭式仅在 cdist > 0 时适用;当 cdist = 0(x1 与 x2 在该点对上完全重合)时,该点对对 x1 的梯度贡献按 0 处理(#3956)。 4. **cholesky**(docs/aclnnLinalgCholesky.md、_en.md):产品支持情况中 Ascend 950PR&950DT 系列产品由「不支持」改为「支持」;self、out 的数据类型由「FLOAT、BFLOAT16」补充为「FLOAT、FLOAT16、BFLOAT16」(#3957)。 5. **cummin**(docs/aclnnCummin.md、_en.md):self、valuesOut 的 dtype 约束由统一规则改为「具体数据类型关系见下方产品支持情况」,并在产品支持情况新增两条分组说明——Ascend 950PR&950DT 系列产品下 self 为 INT8/UINT8/BOOL 时 valuesOut 可为不同的可转换数据类型,其余数据类型需与 self 一致;Atlas A3/A2、Atlas 200I/500 A2、Atlas 推理、Atlas 训练系列产品下 self 的数据类型需能转换为 valuesOut 的数据类型(#3969)。 6. **grouped_bias_add_grad**(docs/aclnnGroupedBiasAddGrad.md、_en.md):groupIdx 求和区间上端点由 groupIdxOptional(j) 改为不含端点的 groupIdxOptional(j)-1,j=0 分支同步改为 groupIdxOptional(0)-1;无可选输入时求和区间由 0 至 C 改为 0 至 C-1;文字说明中明确 groupIdxOptional(j) 表示第 j 组的结束位置(不包含)(#3948)。 7. **pow**(op_api/aclnn_pow.h 头文件注释):out 的数据类型要求由「数据类型、数据格式和shape与self一致」改为「数据格式和shape需与self一致,数据类型需为self与exponent推导后可转换的数据类型」(#3959)。 8. **topk、topkV2**(docs/aclnnTopk.md、aclnnTopk_en.md、aclnnTopkV2.md、aclnnTopkV2_en.md 共 4 个文件):largest 由「计算维度上的结果排序方式」改为「选取最大还是最小的 k 个值」;sorted 删除「当前该参数仅支持取 True」,改为 False 表示不要求输出有序,并明确不保证输出顺序及等值元素的索引稳定性(#3971)。 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3995 https://gitcode.com/cann/ops-math/issues/3971 https://gitcode.com/cann/ops-math/issues/3969 https://gitcode.com/cann/ops-math/issues/3959 https://gitcode.com/cann/ops-math/issues/3957 https://gitcode.com/cann/ops-math/issues/3956 https://gitcode.com/cann/ops-math/issues/3950 https://gitcode.com/cann/ops-math/issues/3948 ## 测试 - 本 PR 仅修改资料与头文件注释,不涉及代码逻辑,未做代码测试; - 资料改动需通过仓库资料门禁/评审校验。 ## 文档更新 - math/bitwise_not/docs/aclnnBitwiseNot.md、aclnnBitwiseNot_en.md - math/bitwise_or/docs/aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar.md、aclnnBitwiseOrScalar&aclnnInplaceBitwiseOrScalar_en.md - math/cdist_grad/docs/aclnnCdistBackward.md、aclnnCdistBackward_en.md - math/cholesky/docs/aclnnLinalgCholesky.md、aclnnLinalgCholesky_en.md - math/cummin/docs/aclnnCummin.md、aclnnCummin_en.md - math/grouped_bias_add_grad/docs/aclnnGroupedBiasAddGrad.md、aclnnGroupedBiasAddGrad_en.md - math/topk/docs/aclnnTopk.md、aclnnTopk_en.md、aclnnTopkV2.md、aclnnTopkV2_en.md - 头文件注释:math/bitwise_not/op_api/aclnn_bitwise_not.h、math/pow/op_api/aclnn_pow.h ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6781 | 12 days ago | |
Cummin示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Co-authored-by: zhouqilong<zhouqilong2@huawei.com> # message auto-generated for no-merge-commit merge: !4672 merge raii-cummin into master Cummin示例改用C++ RAII资源管理,与IsFinite/IsInf示例风格对齐 Created-by: zhou-qilong Commit-by: zhouqilong Merged-by: cann-robot Description: ## 描述 将 math/cummin/examples 下的 aclnn 示例由手动资源管理改为 C++ RAII 管理,与同仓 math/is_finite、math/is_inf 示例风格保持一致。 ## 测试 - bash build.sh --run_example cummin eager --soc=ascend950:编译通过,在 Ascend950PR 上运行成功,输出符合预期(2×4 输入 dim=0 的累积最小值 [3,3,2,1]、[3,2,2,1] 及对应索引 [0,0,0,0]、[0,1,0,0] 正确),示例正常退出。 ## 文档更新 无。 ## 类型标签 - [x] 其他,请描述:示例代码改造(C++ RAII资源管理) See merge request: cann/ops-math!4672 | 2 months 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 | |
coalesce_sparse/cummin适配960dt Co-authored-by: TH<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !6776 merge backBlue1 into master coalesce_sparse/cummin适配960dt Created-by: TH_HW Commit-by: TH Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次改动为 CoalesceSparse、Cummin 两个算子新增 Ascend960DT(NpuArch::DAV_9201)平台支持,使二者可在 Ascend960DT 上完成注册、编译与运行。 具体改动: - CoalesceSparse(conversion/coalesce_sparse): - 在 op_host/coalesce_sparse_def.cpp 中新增 this->AICore().AddConfig("ascend960dt", aicore_config),完成 Ascend960DT 计算单元注册;同时对输入/输出 DataType、Format、UnknownShapeFormat 的换行格式做统一整改,并补齐文件末尾换行。 - 在 op_host/coalesce_sparse_tiling.cpp 的 TilingKeyCalcu、TilingDataCalcu 中,将 isAscend950 判定由仅 DAV_3510 扩展为 DAV_3510 || DAV_9201,使 Ascend960DT 复用 Ascend950 的 tiling key 与多核任务切分逻辑。 - 新增 op_host/config/ascend960dt/coalesce_sparse_binary.json,覆盖 12 组 dtype 组合(unique_len/unique_indices 为 int64/int32,indices 为 int64/int32,values 为 float32/float16/int32);新增 coalesce_sparse_simplified_key.ini(default=0)。 - Cummin(math/cummin): - 在 CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT 中加入 ascend960dt,并在 SUPPORT_TILING_DIR 中补入对应的 arch35 tiling 目录。 - 在 op_host/cummin_def.cpp 中新增 AddConfig("ascend960dt", aicoreConfig),并补齐文件末尾换行。 - 新增 op_host/config/ascend960dt/cummin_binary.json,覆盖 float16/bfloat16/float32/int32 四组 dtype(输入输出同 dtype,另输出 int32 的 argmin);新增 cummin_simplified_key.ini(default=0)。 - 二进制配置:在 scripts/kernel/binary_config/ascendc_config.json 中,为 CoalesceSparse 的 compute_units 增加 ascend960dt 并补充 ascend960dt 的 compile_options(-mllvm -cce-aicore-dcci-before-kernel-end=false);为 Cummin 的 compute_units 增加 ascend960dt。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 编译验证:执行 math 仓编包,确认 CoalesceSparse、Cummin 在 Ascend960DT 下均能正常注册与编译,并生成对应 kernel 二进制。 - 二进制/交付件验证:确认两算子 config/ascend960dt 下的 *_binary.json 与 *_simplified_key.ini 生效,ascendc_config.json 中已包含对应的 ascend960dt 编译单元。 - 功能验证:在 Ascend960DT 上分别运行两算子的 aclnn 用例,覆盖各自 binary 配置中的 dtype 与 shape 组合,结果与 Golden 一致。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6776 | 11 days ago | |
cummin替换A5代际asc DataCopy等接口 Co-authored-by: jiangjiawei<jiangjiawei10@huawei.com> # message auto-generated for no-merge-commit merge: !5443 merge A5_0908 into master cummin替换A5代际asc DataCopy等接口 Created-by: jiangjiawei Commit-by: jiangjiawei Merged-by: cann-robot Description: ## 描述 cummin替换A5代际asc DataCopy等接口 ## 关联的Issue https://gitcode.com/cann/ops-math/issues/3112 ## 测试  ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: See merge request: cann/ops-math!5443 | 1 month ago | |
feat: cummin补充infershape和inferdtype实现及UT用例 Co-authored-by: clinglai0517<laichangling@huawei.com> # message auto-generated for no-merge-commit merge: !4635 merge cummin-infershape into master feat: cummin补充infershape和inferdtype实现及UT用例 Created-by: clinglai0517 Commit-by: clinglai0517 Merged-by: cann-robot Description: ## 描述 补充Cummin 算子 GE 图层推断(InferShape/InferDataType)。原实现仅注册了单输入单输出工具 InferShape4Elewise,而 Cummin 是 1 输入 2 输出(y、argmin),第二个输出 argmin 的 shape 无法得到保证;且原 UT 用例按 2 输入 1 输出编写,与算子定义不符,掩盖了该问题。 修改内容 1. **math/cummin/op_host/cummin_infershape.cpp** - 重写 InferShape:显式处理双输出,y 与 argmin 的 shape 均与输入 x 一致(支持动态 shape 与未知 rank 透传); - 新增 InferDataType:y.dtype 跟随输入 x,argmin.dtype 固定为 int32。 2. **math/cummin/tests/ut/op_host/test_cummin_infershape.cpp** - 按 1 输入 2 输出重写用例,覆盖: - shape:同 shape、标量、动态(-1)、未知 rank(-2); - dtype:float / float16 / bf16 / int32(验证 y 跟随 x、argmin 为 int32)。 ## 关联的Issue Issue [#2620](https://gitcode.com/cann/ops-math/issues/2620) ## 测试 bash bash build.sh -u --ophost --soc=ascend910b --ops=cummin --gtest_filter=CumminInfershape.* 结果:**8/8 用例全部通过**。 ## 文档更新 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!4635 | 2 months ago | |
coalesce_sparse/cummin适配960dt Co-authored-by: TH<taohai2@huawei.com> # message auto-generated for no-merge-commit merge: !6776 merge backBlue1 into master coalesce_sparse/cummin适配960dt Created-by: TH_HW Commit-by: TH Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本次改动为 CoalesceSparse、Cummin 两个算子新增 Ascend960DT(NpuArch::DAV_9201)平台支持,使二者可在 Ascend960DT 上完成注册、编译与运行。 具体改动: - CoalesceSparse(conversion/coalesce_sparse): - 在 op_host/coalesce_sparse_def.cpp 中新增 this->AICore().AddConfig("ascend960dt", aicore_config),完成 Ascend960DT 计算单元注册;同时对输入/输出 DataType、Format、UnknownShapeFormat 的换行格式做统一整改,并补齐文件末尾换行。 - 在 op_host/coalesce_sparse_tiling.cpp 的 TilingKeyCalcu、TilingDataCalcu 中,将 isAscend950 判定由仅 DAV_3510 扩展为 DAV_3510 || DAV_9201,使 Ascend960DT 复用 Ascend950 的 tiling key 与多核任务切分逻辑。 - 新增 op_host/config/ascend960dt/coalesce_sparse_binary.json,覆盖 12 组 dtype 组合(unique_len/unique_indices 为 int64/int32,indices 为 int64/int32,values 为 float32/float16/int32);新增 coalesce_sparse_simplified_key.ini(default=0)。 - Cummin(math/cummin): - 在 CMakeLists.txt 的 SUPPORT_COMPUTE_UNIT 中加入 ascend960dt,并在 SUPPORT_TILING_DIR 中补入对应的 arch35 tiling 目录。 - 在 op_host/cummin_def.cpp 中新增 AddConfig("ascend960dt", aicoreConfig),并补齐文件末尾换行。 - 新增 op_host/config/ascend960dt/cummin_binary.json,覆盖 float16/bfloat16/float32/int32 四组 dtype(输入输出同 dtype,另输出 int32 的 argmin);新增 cummin_simplified_key.ini(default=0)。 - 二进制配置:在 scripts/kernel/binary_config/ascendc_config.json 中,为 CoalesceSparse 的 compute_units 增加 ascend960dt 并补充 ascend960dt 的 compile_options(-mllvm -cce-aicore-dcci-before-kernel-end=false);为 Cummin 的 compute_units 增加 ascend960dt。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> NA ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> - 编译验证:执行 math 仓编包,确认 CoalesceSparse、Cummin 在 Ascend960DT 下均能正常注册与编译,并生成对应 kernel 二进制。 - 二进制/交付件验证:确认两算子 config/ascend960dt 下的 *_binary.json 与 *_simplified_key.ini 生效,ascendc_config.json 中已包含对应的 ascend960dt 编译单元。 - 功能验证:在 Ascend960DT 上分别运行两算子的 aclnn 用例,覆盖各自 binary 配置中的 dtype 与 shape 组合,结果与 Golden 一致。 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 无 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!6776 | 11 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 |
Cummin
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | √ |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
-
算子功能:计算self中的累积最小值,并返回最小值以及对应的索引。
-
计算公式:
valuesOut:
valuesOuti=min(self1,self2,self3,......,selfi)valuesOut_{i} = min(self_{1}, self_{2}, self_{3}, ...... , self_{i}) valuesOuti=min(self1,self2,self3,......,selfi)
indicesOut:
indicesOuti=argmin(self1,self2,self3,......,selfi)indicesOut_{i} = argmin(self_{1}, self_{2}, self_{3}, ...... , self_{i}) indicesOuti=argmin(self1,self2,self3,......,selfi)
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
| x | 输入 | 公式中的self,输入Tensor。 | FLOAT16、FLOAT、DOUBLE、UINT8、INT8、INT16、INT32、INT64、BOOL、BFLOAT16 | ND |
| y | 输出 | 公式中的valuesOut,x的累积最小值。 | FLOAT16、FLOAT、DOUBLE、UINT8、INT8、INT16、INT32、INT64、BOOL、BFLOAT16 | ND |
| argmin | 输出 | 公式中的indicesOut,y应的索引。 | INT32、INT64 | ND |
| axis | 属性 | 处理维度 | int64_t | - |
约束说明
无
调用说明
| 调用方式 | 样例代码 | 说明 |
|---|---|---|
| aclnn调用 | test_aclnn_cummin | 通过aclnnCummin接口方式调用Cummin算子。 |