| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(index): add SparseFillEmptyRows AICPU op Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !7571 merge sparse_fill_empty_rows into master feat(index): add SparseFillEmptyRows AICPU op Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 将 canndev 中的 SparseFillEmptyRows 作为 AICPU 算子迁移到 ops-nn/index/sparse_fill_empty_rows。 主要改动: - 新增 SparseFillEmptyRows AICPU kernel 实现,保持 canndev 核心语义:统计每行元素数,对空行补 [row, 0, ...] = default_value,生成 empty_row_indicator 和 reverse_index_map。 - 新增 AICPU OpDef、op_graph proto、GEIR graph example 和 AICPU UT。 - 新增算子 README,说明输入输出、空行补齐规则、dtype 支持和约束。 - 更新 docs/zh/op_list.md,将 sparse_fill_empty_rows 加入 index 分类。 本轮未新增 aclnn/op_api;canndev 中未检索到 aclnnSparseFillEmptyRows 或对应两段式接口实现。 ## 关联的Issue 无。 ## 测试 已执行: bash pre-commit run --files docs/zh/op_list.md index/sparse_fill_empty_rows/CMakeLists.txt index/sparse_fill_empty_rows/README.md index/sparse_fill_empty_rows/examples/test_geir_sparse_fill_empty_rows.cpp index/sparse_fill_empty_rows/op_graph/CMakeLists.txt index/sparse_fill_empty_rows/op_graph/sparse_fill_empty_rows_proto.h index/sparse_fill_empty_rows/op_kernel_aicpu/CMakeLists.txt index/sparse_fill_empty_rows/op_kernel_aicpu/sparse_fill_empty_rows_aicpu.cpp index/sparse_fill_empty_rows/op_kernel_aicpu/sparse_fill_empty_rows_aicpu.h index/sparse_fill_empty_rows/op_kernel_aicpu/sparse_fill_empty_rows_aicpu_def.cpp index/sparse_fill_empty_rows/tests/CMakeLists.txt index/sparse_fill_empty_rows/tests/ut/CMakeLists.txt index/sparse_fill_empty_rows/tests/ut/op_kernel_aicpu/test_sparse_fill_empty_rows.cpp 结果:通过。 已执行 AICPU UT: bash bash build.sh --opkernel_aicpu_test --ops=sparse_fill_empty_rows -j8 结果:33 个 TEST_SPARSE_FILL_EMPTY_ROWS_UT 用例通过。 已执行自定义包和 GEIR example 验证: bash bash build.sh --pkg --ops=sparse_fill_empty_rows --vendor_name=sfer -j8 ./build_out/cann-ops-nn-sfer_linux-aarch64.run export ASCEND_CUSTOM_OPP_PATH=/home/developer/Ascend/cann-9.0.0/opp/vendors/sfer_nn export LD_LIBRARY_PATH=/home/developer/Ascend/cann-9.0.0/opp/vendors/sfer_nn/op_api/lib:${LD_LIBRARY_PATH} export ASCEND_GLOBAL_LOG_LEVEL=0 bash build.sh --run_example sparse_fill_empty_rows graph 结果:通过。日志确认走到自定义 AICPU kernel:RunCpuKernel[SparseFillEmptyRows] 出现在 aicpu_custom_scheduler 路径下。 ## 文档更新 - 新增 index/sparse_fill_empty_rows/README.md。 - 更新 docs/zh/op_list.md。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7571 | 3 个月前 | |
SparseFillEmptyRows与SparseToDense检视问题整改 Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !9371 merge fix_sparse_review_issues into master SparseFillEmptyRows与SparseToDense检视问题整改 Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 - SparseFillEmptyRows: - InferDataType 常量统一为全大写命名。 - 错误日志改为结构化 EZ 错误宏,并补充 ShapeRange 最小值空指针校验。 - 修正 reverse_index_map 的 ShapeRange,使最小值和最大值分别跟随 indices 第一维 N 的范围上下界。 - 更新 infershape UT,覆盖动态 N 范围 [2, 5]。 - SparseToDense: - 修正 AICPU 日志中的 creat、falied 拼写。 - 删除 paralledDataSize 局部变量和重复魔法数字,统一复用 kParallelDataSize。 ## 关联的Issue 暂无。本 PR 为以下原检视 PR 合入后的整改: - https://gitcode.com/cann/ops-nn/merge_requests/8003 - https://gitcode.com/cann/ops-nn/merge_requests/8005 ## 测试 - git diff --check ups/master...HEAD:通过。 - pre-commit run --files <本PR涉及文件>:通过,OAT 扫描 4 个文件无问题。 - env CCACHE_DIR=/tmp/ccache-ops-nn-sparse-review bash build.sh -u --ophost --ops=sparse_fill_empty_rows -j8:CMake 配置阶段因本地 third_party/ops-tensor 缺少锁定提交 b6438106f46a31c05c4229e0a7fe42e66fd68bc2 阻塞,未进入 UT 编译和执行阶段。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9371 | 1 个月前 | |
SparseFillEmptyRows与SparseToDense检视问题整改 Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !9371 merge fix_sparse_review_issues into master SparseFillEmptyRows与SparseToDense检视问题整改 Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 - SparseFillEmptyRows: - InferDataType 常量统一为全大写命名。 - 错误日志改为结构化 EZ 错误宏,并补充 ShapeRange 最小值空指针校验。 - 修正 reverse_index_map 的 ShapeRange,使最小值和最大值分别跟随 indices 第一维 N 的范围上下界。 - 更新 infershape UT,覆盖动态 N 范围 [2, 5]。 - SparseToDense: - 修正 AICPU 日志中的 creat、falied 拼写。 - 删除 paralledDataSize 局部变量和重复魔法数字,统一复用 kParallelDataSize。 ## 关联的Issue 暂无。本 PR 为以下原检视 PR 合入后的整改: - https://gitcode.com/cann/ops-nn/merge_requests/8003 - https://gitcode.com/cann/ops-nn/merge_requests/8005 ## 测试 - git diff --check ups/master...HEAD:通过。 - pre-commit run --files <本PR涉及文件>:通过,OAT 扫描 4 个文件无问题。 - env CCACHE_DIR=/tmp/ccache-ops-nn-sparse-review bash build.sh -u --ophost --ops=sparse_fill_empty_rows -j8:CMake 配置阶段因本地 third_party/ops-tensor 缺少锁定提交 b6438106f46a31c05c4229e0a7fe42e66fd68bc2 阻塞,未进入 UT 编译和执行阶段。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9371 | 1 个月前 | |
feat(aicpu): AICPU built-in整包准入manifest机制 Co-authored-by: liu-wei<lovline.liuwei@huawei.com> # message auto-generated for no-merge-commit merge: !11655 merge feat/aicpu-builtin-package-manifest into master feat(aicpu): AICPU built-in整包准入manifest机制 Created-by: liu-wei Commit-by: liu-wei Merged-by: cann-robot Description: ## 描述 为 ops-nn 移植 AICPU built-in 整包准入 manifest 机制: 通过白名单控制 AICPU 算子是否准入 built-in 整包,默认全 OFF(与 ops-math 上线口径一致,算子准入由后续 PR 按需登记 xxx=ON),将"隐式排除"显式化为白名单机制。 **主要改动:** - 新增 cmake/config/aicpu_builtin_package_manifest.cmake:准入清单(AICPU_BUILTIN_PACKAGE_FORCE_ALL 默认 OFF + 空 manifest),在进入算子子目录前 include - cmake/func.cmake 新增 check_aicpu_builtin_pkg_allowed() 门控 helper - 23 个 AICPU 算子 op_kernel_aicpu/CMakeLists.txt 的 op_def 收集与 cust obj 编译包进 if (ENABLE_CUSTOM OR _AICPU_BUILTIN_PKG_ALLOWED) 门控 - gen_norm_symbol() 补 built-in 产出接线:NO_AICPU=OFF && ENABLE_PACKAGE=ON 时生成 aicpu_nn.json + libnn_aicpu_kernels.so(安装至 opp/built-in/op_impl/aicpu/{config,kernel}) - 顺手规范化 elu、adaptive_max_pool2d 的变体版权头(master 遗留问题,OAT 合规要求) **不受 manifest 控制(行为不变):** ENABLE_CUSTOM(custom 包直通)、UT(AddAicpuOpTestCase 与收集逻辑解耦)、host 常量折叠(libopconstant_folding_nn.so) **默认行为无回退:** master 上 gen_norm_symbol() 本无 AICPU 产出调用(收集物无消费者),空 manifest 下整包产物与 master 完全一致 ## 关联的Issue https://gitcode.com/cann/ops-nn/issues/6515 ## 测试 本地 5 组 configure/build 验证: | 场景 | 结果 | |---|---| | 空 manifest 整包(ENABLE_PACKAGE=ON) | 干净跳过,无 aicpu 产物,与 master 一致 | | elu=ON | aicpu_nn.json 仅含 Elu;libnn_aicpu_kernels.so 仅链接 elu_cust_obj;安装路径正确 | | FORCE_ALL=ON | 23 算子全准入,json 含全部 23 个算子定义 | | ENABLE_CUSTOM=ON | 23 算子全收集,产出 cust_aicpu_kernel.json(→ vendors/custom_nn),与 master 无差异 | | UT(UT_TEST_ALL=ON) | 23 个算子 UT 用例正常创建 | pre-commit 全部通过(codespell、OAT 合规等)。 ## 文档更新 无需文档更新(纯构建配置改动) ## 类型标签 - 🐛 Bug修复 - ✅ ✨ 新特性 - ⚡ 性能优化 - ♻️ 重构 - 🧪 测试 - ✅ 📦 构建/CI - 🔧 配置变更 - 📝 文档更新 - ⬆️ 依赖升级 - 🔒 安全修复 - 🧹 代码清理 - ❓ 其他,请描述: See merge request: cann/ops-nn!11655 | 24 天前 | |
SparseFillEmptyRows与SparseToDense检视问题整改 Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !9371 merge fix_sparse_review_issues into master SparseFillEmptyRows与SparseToDense检视问题整改 Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 - SparseFillEmptyRows: - InferDataType 常量统一为全大写命名。 - 错误日志改为结构化 EZ 错误宏,并补充 ShapeRange 最小值空指针校验。 - 修正 reverse_index_map 的 ShapeRange,使最小值和最大值分别跟随 indices 第一维 N 的范围上下界。 - 更新 infershape UT,覆盖动态 N 范围 [2, 5]。 - SparseToDense: - 修正 AICPU 日志中的 creat、falied 拼写。 - 删除 paralledDataSize 局部变量和重复魔法数字,统一复用 kParallelDataSize。 ## 关联的Issue 暂无。本 PR 为以下原检视 PR 合入后的整改: - https://gitcode.com/cann/ops-nn/merge_requests/8003 - https://gitcode.com/cann/ops-nn/merge_requests/8005 ## 测试 - git diff --check ups/master...HEAD:通过。 - pre-commit run --files <本PR涉及文件>:通过,OAT 扫描 4 个文件无问题。 - env CCACHE_DIR=/tmp/ccache-ops-nn-sparse-review bash build.sh -u --ophost --ops=sparse_fill_empty_rows -j8:CMake 配置阶段因本地 third_party/ops-tensor 缺少锁定提交 b6438106f46a31c05c4229e0a7fe42e66fd68bc2 阻塞,未进入 UT 编译和执行阶段。 ## 文档更新 无。 ## 类型标签 - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!9371 | 1 个月前 | |
feat(index): add SparseFillEmptyRows AICPU op Co-authored-by: zhaowenrui666<zhaowenrui7@huawei.com> # message auto-generated for no-merge-commit merge: !7571 merge sparse_fill_empty_rows into master feat(index): add SparseFillEmptyRows AICPU op Created-by: zhaowenrui666 Commit-by: zhaowenrui666 Merged-by: cann-robot Description: ## 描述 将 canndev 中的 SparseFillEmptyRows 作为 AICPU 算子迁移到 ops-nn/index/sparse_fill_empty_rows。 主要改动: - 新增 SparseFillEmptyRows AICPU kernel 实现,保持 canndev 核心语义:统计每行元素数,对空行补 [row, 0, ...] = default_value,生成 empty_row_indicator 和 reverse_index_map。 - 新增 AICPU OpDef、op_graph proto、GEIR graph example 和 AICPU UT。 - 新增算子 README,说明输入输出、空行补齐规则、dtype 支持和约束。 - 更新 docs/zh/op_list.md,将 sparse_fill_empty_rows 加入 index 分类。 本轮未新增 aclnn/op_api;canndev 中未检索到 aclnnSparseFillEmptyRows 或对应两段式接口实现。 ## 关联的Issue 无。 ## 测试 已执行: bash pre-commit run --files docs/zh/op_list.md index/sparse_fill_empty_rows/CMakeLists.txt index/sparse_fill_empty_rows/README.md index/sparse_fill_empty_rows/examples/test_geir_sparse_fill_empty_rows.cpp index/sparse_fill_empty_rows/op_graph/CMakeLists.txt index/sparse_fill_empty_rows/op_graph/sparse_fill_empty_rows_proto.h index/sparse_fill_empty_rows/op_kernel_aicpu/CMakeLists.txt index/sparse_fill_empty_rows/op_kernel_aicpu/sparse_fill_empty_rows_aicpu.cpp index/sparse_fill_empty_rows/op_kernel_aicpu/sparse_fill_empty_rows_aicpu.h index/sparse_fill_empty_rows/op_kernel_aicpu/sparse_fill_empty_rows_aicpu_def.cpp index/sparse_fill_empty_rows/tests/CMakeLists.txt index/sparse_fill_empty_rows/tests/ut/CMakeLists.txt index/sparse_fill_empty_rows/tests/ut/op_kernel_aicpu/test_sparse_fill_empty_rows.cpp 结果:通过。 已执行 AICPU UT: bash bash build.sh --opkernel_aicpu_test --ops=sparse_fill_empty_rows -j8 结果:33 个 TEST_SPARSE_FILL_EMPTY_ROWS_UT 用例通过。 已执行自定义包和 GEIR example 验证: bash bash build.sh --pkg --ops=sparse_fill_empty_rows --vendor_name=sfer -j8 ./build_out/cann-ops-nn-sfer_linux-aarch64.run export ASCEND_CUSTOM_OPP_PATH=/home/developer/Ascend/cann-9.0.0/opp/vendors/sfer_nn export LD_LIBRARY_PATH=/home/developer/Ascend/cann-9.0.0/opp/vendors/sfer_nn/op_api/lib:${LD_LIBRARY_PATH} export ASCEND_GLOBAL_LOG_LEVEL=0 bash build.sh --run_example sparse_fill_empty_rows graph 结果:通过。日志确认走到自定义 AICPU kernel:RunCpuKernel[SparseFillEmptyRows] 出现在 aicpu_custom_scheduler 路径下。 ## 文档更新 - 新增 index/sparse_fill_empty_rows/README.md。 - 更新 docs/zh/op_list.md。 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 - [x] AI辅助编写 See merge request: cann/ops-nn!7571 | 3 个月前 | |
产品名称修改 Co-authored-by: y60124828<yanglou1@h-partners.com> # message auto-generated for no-merge-commit merge: !11292 merge master into master 产品名称修改 Created-by: yanglu-1 Commit-by: y60124828 Merged-by: cann-robot Description: ## 描述 产品名称修改 ## 关联的Issue 关联Issue [#6089](https://gitcode.com/cann/ops-nn/issues/6089) ## 测试 <!--描述进行了哪些测试来验证你的改动。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [ ] AI辅助编写 See merge request: cann/ops-nn!11292 | 1 个月前 |
SparseFillEmptyRows
产品支持情况
| 产品 | 是否支持 |
|---|---|
| Ascend 950PR&950DT系列产品 | √ |
| Atlas A3系列产品 | √ |
| Atlas A2系列产品 | √ |
| Atlas 200I/500 A2推理产品 | × |
| Atlas推理系列产品 | √ |
| Atlas训练系列产品 | √ |
功能说明
- 算子功能:对稀疏张量的第0维逐行检查,当某一行没有任何非零元素时,在输出稀疏张量中为该行补充一个位置为
[row, 0, ...]、取值为default_value的元素。
参数说明
| 参数名 | 输入/输出/属性 | 描述 | 数据类型 | 数据格式 |
|---|---|---|---|---|
indices |
输入 | 形状为[N, rank]的二维张量,每一行表示一个稀疏元素在 dense tensor 中的坐标。 |
INT64 | ND |
values |
输入 | 形状为[N]的一维张量,表示indices中每个稀疏元素对应的值。 |
BOOL、COMPLEX128、COMPLEX64、DOUBLE、FLOAT、FLOAT16、INT16、INT32、INT64、INT8、UINT16、UINT32、UINT64、UINT8 | ND |
dense_shape |
输入 | 形状为[rank]的一维张量,表示稀疏张量对应 dense tensor 的形状,dense_shape[0]表示行数。 |
INT64 | ND |
default_value |
输入 | 标量张量,表示空行回补时写入y_values的默认值。 |
BOOL、COMPLEX128、COMPLEX64、DOUBLE、FLOAT、FLOAT16、INT16、INT32、INT64、INT8、UINT16、UINT32、UINT64、UINT8 | ND |
y_indices |
输出 | 回补空行后的稀疏索引,形状为[N + empty_row_count, rank]。 |
INT64 | ND |
y_values |
输出 | 回补空行后的稀疏值,形状为[N + empty_row_count],数据类型与values一致。 |
BOOL、COMPLEX128、COMPLEX64、DOUBLE、FLOAT、FLOAT16、INT16、INT32、INT64、INT8、UINT16、UINT32、UINT64、UINT8 | ND |
empty_row_indicator |
输出 | 形状为[dense_shape[0]]的一维布尔张量,true表示对应行在输入稀疏张量中为空。 |
BOOL | ND |
reverse_index_map |
输出 | 形状为[N]的一维张量,reverse_index_map[i]表示输入第i个元素在输出中的位置。 |
INT64 | ND |
约束说明
indices必须是二维张量,第二维大小为rank。values的元素数必须与indices第一维N一致。dense_shape必须是一维张量,元素数为rank。indices[i, 0]必须满足0 <= indices[i, 0] < dense_shape[0]。- 当
dense_shape[0] == 0时,N必须为0。 values、default_value、y_values的数据类型需要保持一致。- 本算子为AI CPU实现。
调用说明
| 调用方式 | 调用样例 | 说明 |
|---|---|---|
| 图模式调用 | test_geir_sparse_fill_empty_rows | 通过算子IR构图方式调用SparseFillEmptyRows算子。 |