| add aicpu:topk&calc_buckets_limit_and_offset&compare_and_bit_pack Co-authored-by: sujunwei3<sujunwei3@huawei.com> # message auto-generated for no-merge-commit merge: !3724 merge dev into master add aicpu:topk&calc_buckets_limit_and_offset&compare_and_bit_pack Created-by: sujunwei3 Commit-by: sujunwei3 Merged-by: cann-robot Description: ## 描述 新增 TopK、CalcBucketsLimitAndOffset、CompareAndBitPack 三个 AICPU 算子的完整实现,共涉及 28 个文件变更。 ### 1. TopK(math/topk/) 从已有 aclnn 接口扩展为完整 AICPU 算子实现: - 新增 op_graph/topk_proto.h:算子协议定义 - 新增 op_host/topk_infershape.cpp:host 侧 shape 推导 - 新增 op_kernel_aicpu/topk_aicpu.cpp、topk_aicpu.h、topk_aicpu_def.cpp:AICPU kernel 实现及注册 - 新增 op_kernel_aicpu/CMakeLists.txt、op_graph/CMakeLists.txt:构建配置 - 新增 examples/test_geir_topk.cpp:使用示例 - 新增 tests/ut/op_kernel_aicpu/test_topk.cpp:单元测试 - 修改 CMakeLists.txt:添加 UT 测试配置 - 修改 README.md:补充完整算子文档(产品支持情况、接口说明等) ### 2. CalcBucketsLimitAndOffset(conversion/calc_buckets_limit_and_offset/) 全新 AICPU 算子,用于计算 buckets 的 limit 和 offset 值: - 新增 CMakeLists.txt、op_graph/calc_buckets_limit_and_offset_proto.h - 新增 op_kernel_aicpu/calc_buckets_limit_and_offset_aicpu.cpp、.h、_def.cpp - 新增 examples/test_geir_calc_buckets_limit_and_offset.cpp - 新增 tests/ut/op_kernel_aicpu/test_calc_buckets_limit_and_offset.cpp - 新增 README.md:算子文档 ### 3. CompareAndBitPack(math/compare_and_bit_pack/) 全新 AICPU 算子,将输入与阈值进行比较并将比较结果的比特位打包为 uint8 输出: - 新增 CMakeLists.txt、op_graph/compare_and_bit_pack_proto.h - 新增 op_kernel_aicpu/compare_and_bit_pack_aicpu.cpp、.h、_def.cpp - 新增 examples/test_geir_compare_and_bit_pack.cpp - 新增 tests/ut/op_kernel_aicpu/test_compare_and_bit_pack.cpp - 新增 README.md:算子文档 ### 4. 文档更新 - 修改 docs/zh/op_list.md:在算子列表中添加 compare_and_bit_pack 等算子条目 ## 关联的Issue #2187 ## 测试 根据代码变更,测试场景如下: 1. **算子构建测试** - 执行 cmake 配置和编译,验证三个算子(TopK、CalcBucketsLimitAndOffset、CompareAndBitPack)的 CMakeLists.txt 配置正确,能正常编译构建 2. **单元测试(UT)** - 运行 tests/ut/op_kernel_aicpu/test_topk.cpp,验证 TopK 算子在不同数据类型(float16、float32、int32)和 shape 下的计算正确性 - 运行 tests/ut/op_kernel_aicpu/test_calc_buckets_limit_and_offset.cpp,验证 CalcBucketsLimitAndOffset 算子的功能正确性 - 运行 tests/ut/op_kernel_aicpu/test_compare_and_bit_pack.cpp,验证 CompareAndBitPack 算子在不同数据类型下的比较和比特打包功能正确性 3. **Example 验证** - 编译并运行 examples/test_geir_topk.cpp,验证 TopK 算子端到端调用流程 - 编译并运行 examples/test_geir_calc_buckets_limit_and_offset.cpp,验证 CalcBucketsLimitAndOffset 算子端到端调用流程 - 编译并运行 examples/test_geir_compare_and_bit_pack.cpp,验证 CompareAndBitPack 算子端到端调用流程 4. **算子加载测试** - 验证三个算子的 AICPU kernel 注册成功,接口可正常调用 ## 文档更新 - 新增 math/topk/README.md:TopK 算子完整文档(产品支持情况、接口说明、约束限制等) - 新增 conversion/calc_buckets_limit_and_offset/README.md:CalcBucketsLimitAndOffset 算子文档 - 新增 math/compare_and_bit_pack/README.md:CompareAndBitPack 算子文档 - 修改 docs/zh/op_list.md:算子列表新增条目 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!3724 | 27 天前 |