| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
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 | 2 个月前 | |
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 个月前 | |
告警清理 Co-authored-by: zcy123456x<zhouchenyang5@huawei.com> # message auto-generated for no-merge-commit merge: !10737 merge 0918-codewarning into master 告警清理 Created-by: zcy123456x Commit-by: zcy123456x Merged-by: cann-robot Description: ## 描述 本次变更用于清理 AICPU 算子代码告警,主要包括: 1. 避免直接使用 reinterpret_cast - 将部分 GetData() 后的指针转换改为仓内通用的 PtrToPtr<void, T> 写法。 - 涉及 ScatterElements、SparseSegmentMean、AvgPool1DAvgMatrix 等算子。 2. 避免 lambda 使用默认捕获模式 - 将 [&] 默认捕获改为显式捕获,明确 lambda 依赖的局部变量或成员。 - 涉及 ScatterElements、ScatterNdMin、SparseToDense、TensorScatterUpdate 等算子。 3. 避免宏定义依赖宏外部局部变量 - SparseFillEmptyRows 的数据类型分发宏改为显式传入 ret、ctx、indices、values、denseShape、defaultValue。 4. 补充虚函数重写标识 - 为 AvgPool1DAvgMatrixCpuKernel 析构函数补充 override。 本次修改不涉及算子功能逻辑变更,主要为静态检查/代码规范告警清理。 ## 关联的Issue 本次不关联ISSUE ## 测试 黄区验证门禁,LLT,build构建 ## 文档更新 不涉及文档更新 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [x] 其他,请描述: ## AI/Agent生成声明 <!-- [x] 表示选中 --> - [x] AI辅助编写 See merge request: cann/ops-nn!10737 | 26 天前 | |
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 | 2 个月前 | |
产品名称修改 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 | 17 天前 |
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算子。 |