| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(index): add SparseSegmentMean AICPU op Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !7587 merge sparse_segment_mean_aicpu into master feat(index): add SparseSegmentMean AICPU op Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 迁移 SparseSegmentMean AICPU 算子到 ops-nn/index 目录,补齐自定义 AICPU 构建、注册、UT、GEIR example 和 README 文档。 主要改动: - 新增 index/sparse_segment_mean/op_kernel_aicpu,包含 AICPU kernel、头文件、AICPU OpDef 和 CMakeLists.txt。 - 新增 index/sparse_segment_mean/tests/ut/op_kernel_aicpu/test_sparse_segment_mean.cpp,覆盖 float/double/float16、int32/int64 indices 和异常场景。 - 新增 index/sparse_segment_mean/examples/test_geir_sparse_segment_mean.cpp,验证图模式 cust 调用链路。 - 新增 index/sparse_segment_mean/README.md,并更新 docs/zh/op_list.md。 ## 关联的Issue 暂无。 ## 测试 已完成以下验证: - pre-commit run --files docs/zh/op_list.md index/sparse_segment_mean/README.md index/sparse_segment_mean/examples/test_geir_sparse_segment_mean.cpp index/sparse_segment_mean/op_kernel_aicpu/CMakeLists.txt index/sparse_segment_mean/op_kernel_aicpu/sparse_segment_mean_aicpu.cpp index/sparse_segment_mean/op_kernel_aicpu/sparse_segment_mean_aicpu.h index/sparse_segment_mean/op_kernel_aicpu/sparse_segment_mean_aicpu_def.cpp index/sparse_segment_mean/tests/ut/op_kernel_aicpu/test_sparse_segment_mean.cpp - bash build.sh -u --opkernel_aicpu --ops=sparse_segment_mean - bash build.sh --pkg --soc=ascend910b --ops=sparse_segment_mean - bash build.sh --run_example sparse_segment_mean graph cust ## 文档更新 - 新增 index/sparse_segment_mean/README.md。 - 更新 docs/zh/op_list.md,补充 sparse_segment_mean 的 AI Core/AI CPU 支持信息。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7587 | 1 个月前 | |
refactor: 迁移 TF 插件注册至新框架 API(part 3) Co-authored-by: Nice_try<zhangzhiwei108@huawei.com> # message auto-generated for no-merge-commit merge: !9758 merge tf-plugin-part3 into master refactor: 迁移 TF 插件注册至新框架 API(part 3) Created-by: Nice_try Commit-by: Nice_try Merged-by: cann-robot Description: ## 描述 将 TF 框架侧自定义算子注册(REGISTER_CUSTOM_OP)从旧工具链迁移至 ops-nn 新仓(TF 插件迁移 part 3),共新增/调整 22 个 *_tf_plugin.cpp 注册文件。 ### 改动原因 1. 旧注册 API(ParseParamsFn/AutoMappingFn)与标量 OriginOpType({...}) 写法在新工具链已不适用,统一迁移为 ParseParamsByOperatorFn(AutoMappingByOpFn) 与 OriginOpType(std::vector<ge::AscendString>{...}) 形式; 2. 依赖 TF protobuf NodeDef(node_def.pb.h)的旧解析逻辑在新工具链中已不存在,相关解析改为基于 ge::Operator 的子图分解(ParseOpToGraphFn/FusionParseParamsFn)实现; 3. 承接本仓已完成的 TF 插件迁移 part 1/2,补齐剩余算子的 TF 注册。 ### 改动方法 按模块汇总: - common:新增 AscendWeightQuant(TF 字符串 dst_type 到 ge DataType 的转换解析)、GatherPoint(分解为 GatherV2+Const 子图)、GatherPointGrad(分解为 ScatterUpdate 子图)注册; - index:gather_v2 新增 Gather/ResourceGather 到自定义 Gather 的注册;scatter_add/scatter_sub 新增 TensorScatterAdd/TensorScatterSub 注册;新增 BroadcastGradientArgs、SparseSegmentMean、SparseSegmentMeanGrad、SparseSlice、SparseToDense 注册; - norm:BNInfer/BNTrainingReduceGrad/BNTrainingUpdateGrad/LayerNorm/LayerNormGrad 由 ParseParamsFn 迁移到 ParseParamsByOperatorFn;LayerNorm/LayerNormGrad 增补 FusedLayerNorm/FusedLayerNormGrad 双 origin 映射;bn_training_update_v2 新增 BNTrainingUpdate 注册; - optim:ApplyAdagrad 迁移新 API(保留 ApplyAdagrad/ResourceApplyAdagrad 双 origin); - matmul:新增 Einsum 注册; - rnn:新增 BlockLSTM(分解为 DynamicRNN 子图,含 seq_length 的 Cast 与输出重排)、DynamicRNN 融合解析(FusionParseParamsFn)与 DynamicRnn 注册、DynamicRNNV2/DynamicRnnV2 系列注册(含 is_misplaced 属性处理)。 ## 关联的Issue 关联 Issue #5505:https://gitcode.com/cann/ops-nn/issues/5505 ## 测试 本 PR 仅涉及注册/图解析代码迁移,无测试文件变更;依赖仓内 CI(编译、静态检查、UT/ST 工作流)验证。 ## 文档更新 无。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:TF 插件注册迁移(part 3) ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9758 | 21 天前 | |
SparseSegmentMean RT2 infershape 迁移 Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !8004 merge sparse_segment_mean_rt2_infershape into master SparseSegmentMean RT2 infershape 迁移 Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ### 修改内容 - 新增 SparseSegmentMean RT2 InferShape/InferDataType。 - 输出 shape 语义对齐 canndev SparseSegmentMean RT2,复用 SparseSegmentSum 同类推导口径。 - 增加 op_host infershape UT 覆盖 segment_ids 常量、未知输出首维、dtype 跟随输入等场景。 ### 依据 - canndev: ops/built-in/op_proto/runtime/math_ops.cc SparseSegmentMean RT2 - 参考已合入 SparseSegmentSum RT2 迁移写法 ### 验证 - git diff --check - bash build.sh -u --ophost --ops=sparse_segment_mean --noexec -j8 - pre-commit 已在提交时通过 See merge request: cann/ops-nn!8004 | 28 天前 | |
Feature: 为 index 和 pooling 类算子新增 Ascend350 平台支持 Co-authored-by: klein8793<zhangli24@huawei.com> # message auto-generated for no-merge-commit merge: !9754 merge dev_zl_2026_0902 into master Feature: 为 index 和 pooling 类算子新增 Ascend350 平台支持 Created-by: klein8793 Commit-by: klein8793 Merged-by: cann-robot Description: ## 描述 为 index 和 pooling 类算子新增 Ascend350 平台支持。具体变更包括: 1. **新增 Ascend350 平台配置文件**(42 个 JSON):为每个算子新增 op_host/config/ascend350/ 下的二进制配置 JSON 2. **注册 Ascend350 平台**:在各算子 _def.cpp 中添加 his->AICore().AddConfig(ascend350, aicoreConfig) 3. **更新编译配置**:修改各算子 CMakeLists.txt,添加 Ascend350 编译选项;更新 scendc_config.json 中对应算子的 compute_units 列表,将 [ascend950] 扩展为 [ascend950, ascend350] 4. **更新 Fusion Pass 平台判断**:在 bucketize_v2_fusion_pass、inplace_add_fusion_pass、gather_fusion_pass、tensor_scatter_add_fusion_pass、sorted_sparse_segment_mean_grad_fusion_pass 中将 Ascend350 加入平台白名单 涉及算子(35+): - index: bucketize_v2, concat_offset, gather_elements, gather_nd, gather_v2, index_fill, index_fill_d, index_put_v2, inplace_index_add, inplace_index_fill, linear_index_v2, masked_scatter, repeat_interleave, reverse_sequence, reverse_v2, scatter, scatter_add, scatter_add_with_sorted, scatter_elements, scatter_elements_v2, scatter_nd, scatter_nd_add, scatter_nd_max, scatter_nd_min, scatter_nd_update, scatter_sub, scatter_update, segment_sum, sorted_sparse_segment_mean_grad, sparse_segment_mean, sparse_to_dense, unsorted_segment_max, unsorted_segment_min - pooling: avg_pool, avg_pool_v2 - 公共库: scatter_nd_common, unsorted_segment_common, sort_lib ## 关联的Issue - #5651 ## 测试 obp冒烟、david冒烟已通过 ## 文档更新 NA ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [ ] AI辅助编写 See merge request: cann/ops-nn!9754 | 7 天前 | |
AscendC接口兼容性变更整改 Co-authored-by: lihang_13123<lihang106@h-partners.com> # message auto-generated for no-merge-commit merge: !8316 merge scatter into master AscendC接口兼容性变更整改 Created-by: lihang_13123 Commit-by: lihang_13123 Merged-by: cann-robot Description: ## 描述 AscendC部分接口兼容性变更,为与接口文档保持一致,修改部分算子对应接口。修改后各算子二进制和修改前一致 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。例如:关联Issue #000--> ## 测试 修改后各算子二进制和修改前一致,算子调用OK,冒烟OK ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述:算子AscendC接口兼容性整改 ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!8316 | 1 个月前 | |
fix(cleancode): AICPU算子告警整改(第三批) Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !10997 merge fix/warning-cleanup-v3 into master fix(cleancode): AICPU算子告警整改(第三批) Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 ops-nn AICPU 算子告警整改第三批,修复 18 条告警(G.CNS.03 ×12 / G.EXP.27+36 ×5 / G.CNS.04 ×1),共 14 个文件 +29/-29: | 告警 | 算子 | 修复 | |---|---|---| | G.CNS.03 ×12 | log_softmax_v2、scatter_elements、sparse_segment_mean、sparse_segment_sum、sparse_to_dense、tensor_scatter_update | 12 处成员函数补充 const(声明与定义同步,被调成员均为 const 或自由函数) | | G.EXP.27/36 ×4 | softmax_v2 | NormalCheck(...)/detail::SoftmaxV2Check(...) 两处 ?: 条件改为显式 != KERNEL_STATUS_OK | | G.EXP.27 ×1 | reverse_sequence | reverseNum % kEven 显式比较 != 0 | | G.CNS.04 ×1 | tensor_scatter_update | GetBatchStrides 的 outer_shape 参数加 const(仅读取) | ## 不处理项(附判定依据) - 浮点 == static_cast<T>(0) ×2(log_softmax_v2/softmax_v2 的除零防护):保持语义,建议工具豁免; - sparse_to_dense G.STD.02 ×4:char* 为字节缓冲非字符串,误报; - EigenSparseToDense 的 SparseTensor& st:st.ToDense<>() 受 Eigen API 限制,疑似误报。 ## 验证 - 8 个改动 TU 语法级编译通过(g++ -std=c++14); - 二进制级对比(父提交 467b22d6c vs 本提交 7f12ebcbc,同编译参数 g++ -O2 -std=c++14):8 个 TU 全部机器码/数据节**内容多重集逐字节一致**(合计 1298 节),仅 const 成员函数 mangled 名(符号表及 scatter_elements 15 节、sparse_to_dense 1 节的内嵌签名串 ZN→ZNK)变化——**零功能影响**; - CI 流水线待跑。 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6114 ## 类型标签 - [x] ♻️ 重构 - [x] 🧹 代码清理 See merge request: cann/ops-nn!10997 | 2 天前 | |
SparseSegmentMean RT2 infershape 迁移 Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !8004 merge sparse_segment_mean_rt2_infershape into master SparseSegmentMean RT2 infershape 迁移 Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ### 修改内容 - 新增 SparseSegmentMean RT2 InferShape/InferDataType。 - 输出 shape 语义对齐 canndev SparseSegmentMean RT2,复用 SparseSegmentSum 同类推导口径。 - 增加 op_host infershape UT 覆盖 segment_ids 常量、未知输出首维、dtype 跟随输入等场景。 ### 依据 - canndev: ops/built-in/op_proto/runtime/math_ops.cc SparseSegmentMean RT2 - 参考已合入 SparseSegmentSum RT2 迁移写法 ### 验证 - git diff --check - bash build.sh -u --ophost --ops=sparse_segment_mean --noexec -j8 - pre-commit 已在提交时通过 See merge request: cann/ops-nn!8004 | 28 天前 | |
feat(aicpu): enable constant folding for migrated ops Co-authored-by: hid29204727<wangboyu20@huawei.com> # message auto-generated for no-merge-commit merge: !9280 merge codex/aicpu-const-folding into master feat(aicpu): enable constant folding for migrated ops Created-by: hid29204727 Commit-by: hid29204727 Merged-by: cann-robot Description: ## 描述 补充 ops-nn 仓 AICPU host 常量折叠注册通路,并为当前已标记 OPEN_OPS_FLAG 的 18 个迁移算子统一开启常量折叠支持。 主要改动: - 新增仓级 OPS_NN_REGISTER_CPU_KERNELV2 注册包装宏,host 构建优先注册 V2,device/custom/UT 保持 V1 回退。 - 为 add_modules_sources 和 add_all_modules_sources 增加 HOSTCPU 参数及 host OBJECT 收集逻辑。 - 为 18 个 OPEN_OPS_FLAG 算子补充 HOSTCPU TRUE、注册头文件和 V2 注册。 - host OBJECT 汇入 libopconstant_folding_nn.so。 ## 关联的Issue 无。 ## 测试 已完成以下静态验证: - git diff --check 通过。 - 18 个 OPEN_OPS_FLAG 算子均具备 HOSTCPU TRUE。 - 18 个算子均使用 OPS_NN_REGISTER_CPU_KERNELV2,无直接 V1 注册残留。 - 注册头文件、host 编译宏和仓级 so 收集通路检查通过。 当前 Windows 环境缺少 CANN、NPU、CMake 和远端构建桥,未执行 bash build.sh --pkg -j16;完整打包构建及常量折叠功能验证待 CANN Linux 环境/CI 完成。 ## 文档更新 无仓内文档变更。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9280 | 6 天前 | |
feat(index): add SparseSegmentMean AICPU op Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !7587 merge sparse_segment_mean_aicpu into master feat(index): add SparseSegmentMean AICPU op Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 迁移 SparseSegmentMean AICPU 算子到 ops-nn/index 目录,补齐自定义 AICPU 构建、注册、UT、GEIR example 和 README 文档。 主要改动: - 新增 index/sparse_segment_mean/op_kernel_aicpu,包含 AICPU kernel、头文件、AICPU OpDef 和 CMakeLists.txt。 - 新增 index/sparse_segment_mean/tests/ut/op_kernel_aicpu/test_sparse_segment_mean.cpp,覆盖 float/double/float16、int32/int64 indices 和异常场景。 - 新增 index/sparse_segment_mean/examples/test_geir_sparse_segment_mean.cpp,验证图模式 cust 调用链路。 - 新增 index/sparse_segment_mean/README.md,并更新 docs/zh/op_list.md。 ## 关联的Issue 暂无。 ## 测试 已完成以下验证: - pre-commit run --files docs/zh/op_list.md index/sparse_segment_mean/README.md index/sparse_segment_mean/examples/test_geir_sparse_segment_mean.cpp index/sparse_segment_mean/op_kernel_aicpu/CMakeLists.txt index/sparse_segment_mean/op_kernel_aicpu/sparse_segment_mean_aicpu.cpp index/sparse_segment_mean/op_kernel_aicpu/sparse_segment_mean_aicpu.h index/sparse_segment_mean/op_kernel_aicpu/sparse_segment_mean_aicpu_def.cpp index/sparse_segment_mean/tests/ut/op_kernel_aicpu/test_sparse_segment_mean.cpp - bash build.sh -u --opkernel_aicpu --ops=sparse_segment_mean - bash build.sh --pkg --soc=ascend910b --ops=sparse_segment_mean - bash build.sh --run_example sparse_segment_mean graph cust ## 文档更新 - 新增 index/sparse_segment_mean/README.md。 - 更新 docs/zh/op_list.md,补充 sparse_segment_mean 的 AI Core/AI CPU 支持信息。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7587 | 1 个月前 |
SparseSegmentMean
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR/Ascend 950DT | √ |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | × |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
功能说明
- 算子功能:根据
indices和有序的segment_ids从x中选取若干行,并对同一个 segment 内的行按第0维求平均。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
x |
输入 | 输入张量,rank至少为1。 | FLOAT、DOUBLE、FLOAT16 | ND |
indices |
输入 | 一维张量,表示从x第0维选取的行索引。 |
INT32、INT64 | ND |
segment_ids |
输入 | 一维张量,元素个数与indices一致,值必须非负且按非递减顺序排列。 |
INT32、INT64 | ND |
y |
输出 | 输出张量,数据类型与x一致,第0维大小为segment_ids最后一个元素加1,其余维度与x一致。 |
FLOAT、DOUBLE、FLOAT16 | ND |
约束说明
x、indices、segment_ids不能为空张量。x的rank必须大于等于1。indices与segment_ids元素个数必须一致。indices中的值必须小于x第0维大小。segment_ids必须非负且按非递减顺序排列。x和y的数据类型必须一致。- 本算子支持AI CPU实现,AI CPU实现支持FLOAT、DOUBLE、FLOAT16。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_sparse_segment_mean | 通过算子IR构图方式调用SparseSegmentMean算子。 |