| 文档中,存在部分低错问题,修复不正确的文档描述 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !2642 merge master into master 文档中,存在部分低错问题,修复不正确的文档描述 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 文档中,存在部分低错问题,修复不正确的文档描述 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/ops-math/issues/1454 https://gitcode.com/cann/ops-math/issues/1465 https://gitcode.com/cann/ops-math/issues/1482 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2642 | 3 个月前 |
| add_example_aicpu修改 Co-authored-by: Ding_Jing<dingjing19@huawei.com> # message auto-generated for no-merge-commit merge: !2237 merge bugfix-0415 into master add_example_aicpu修改 Created-by: Ding_Jing Commit-by: Ding_Jing Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 本PR的具体修改内容如下: 1、修复add_example_aicpu的ut 2、ut说明中添加aicpu的kernel执行 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> issue [#1122](https://gitcode.com/cann/ops-math/issues/1122) ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> [2026-04-15 13:01:30] [ RUN ] TEST_AddExample_UT.INT32_VECTOR_ADD_SUCC [2026-04-15 13:01:30] [ OK ] TEST_AddExample_UT.INT32_VECTOR_ADD_SUCC (0 ms) [2026-04-15 13:01:30] [----------] 1 test from TEST_AddExample_UT (0 ms total) [2026-04-15 13:01:30] [2026-04-15 13:01:30] [----------] Global test environment tear-down [2026-04-15 13:01:30] [==========] 1 test from 1 test suite ran. (0 ms total) [2026-04-15 13:01:30] [ PASSED ] 1 test. [2026-04-15 13:01:30] [100%] Built target math_aicpu_op_kernel_ut ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 更新了docs/zh/install/compile.md ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2237 | 4 个月前 |
| feat: 新增 Add 算子 C API(asc_simd)风格示例工程 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !2708 merge master into master feat: 新增 Add 算子 C API(asc_simd)风格示例工程 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 新增 Add 算子的 C API(asc_simd)风格示例工程 add_example_c_api,展示使用 C API 方式开发 AI Core 算子的完整流程,区别于传统 C++ 类方式的 AscendC API。 ### 改动原因 现有示例仅包含 C++ 类方式(AscendC API)和 AI CPU 方式的算子开发样例,缺少 C API(asc_simd)风格的示例。本 PR 补充了该开发方式的端到端示例,方便开发者参考。 ### 改动方法 1. 新增 examples/add_example_c_api/ 目录,包含完整的算子工程结构: - op_kernel/:使用 C API(asc_simd)实现加法 kernel,核心接口包括 asc_init()、asc_copy_gm2ub_sync()、asc_add_sync()、asc_copy_ub2gm_sync() - op_host/:Tiling 实现、算子定义(OpDef)、InferShape 实现 - op_graph/:图推理(InferShape/InferDataType)及 proto 定义 - examples/:aclnn 调用样例(test_aclnn_add_example_c_api.cpp) 2. 算子定义支持 ascend910b、ascend910_93、ascend950 硬件平台 3. 输入输出仅支持 FLOAT 数据类型,4 维 ND 格式 4. 更新 examples/README.md 添加新示例目录说明和样例表格条目 ## 关联的Issue - #1535 ## 测试 提供 aclnn 调用样例(test_aclnn_add_example_c_api.cpp),使用 32×4×4×4 的 FLOAT 张量进行端到端验证,计算 x1 + x2 = y 并打印结果。 ## 文档更新 - 新增 examples/add_example_c_api/README.md,说明产品支持情况、功能说明、参数说明、约束说明、调用方式和 Kernel 开发方式 - 更新 examples/README.md 添加 add_example_c_api 目录结构和样例表格 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2708 | 3 个月前 |
| feat: migrate fast kernel launch example to ASC CMake Co-authored-by: zhangzijie<zhangzijie11@hisilicon.com> # message auto-generated for no-merge-commit merge: !2520 merge feature/fast-kernel-launch-asc into master feat: migrate fast kernel launch example to ASC CMake Created-by: zhangzijie Commit-by: zhangzijie Merged-by: cann-robot Description: ## 描述 将 examples/fast_kernel_launch_example 迁移到 CMake 原生 ASC 语言构建,并整理 Fast Kernel Launch 示例的算子构建组织方式: - 将 add/sqrt/gelu/layer_norm 算子实现从 .cpp 重命名为 .asc - 顶层 CMake 使用 find_package(ASC REQUIRED) 和 project(... LANGUAGES C CXX ASC) 启用 ASC 语言 - 将示例算子目录从 ascend910b 收敛到编译器使用的 NPU_ARCH 命名,例如 dav-2201 - 将算子对象文件收集方式从全局 OBJECTS_LIST cache 变量改为 CMake object target + global property - 构建入口优先使用 Ninja,并在 README 中补充 NPU_ARCH 和新增算子的开发方式 ## Refactor 方案 ### 1. 构建入口改为 CMake 原生 ASC 语言 原方案通过普通 C/CXX 工程、手动指定 bisheng 编译器、给 .cpp 源文件追加 -xasc 的方式触发 ASC 编译。该方式把 ASC 编译细节散落在自定义宏和全局变量中,新增算子时需要理解较多隐藏约定。 本次重构改为在顶层 CMakeLists.txt 中先加载 cmake/ascend.cmake,再执行: cmake find_package(ASC REQUIRED) project(${PKG_NAME} VERSION 1.0.0 LANGUAGES C CXX ASC) 这样 ASC 被声明为工程语言,.asc 源文件由 CMake/ASC 包正常识别,不再依赖 LANGUAGE CXX + -xasc 的绕行方式。cmake/ascend.cmake 只负责定位 Ascend Toolkit、bisheng 和默认 toolchain,ASC include/link 细节交给 find_package(ASC) 提供的能力处理。 ### 2. NPU 架构命名从芯片名切换到编译器参数 原目录使用 ascend910b,但实际传给编译器的是 --npu-arch=dav-2201。这会让目录名、CMake 参数和编译器参数不一致。 本次重构统一使用编译器 --npu-arch 对应的取值作为目录名和构建参数: - 默认 NPU_ARCH=dav-2201 - 支持 dav-2201 和 dav-3510 - 支持通过环境变量 NPU_ARCH 或 CMake cache 覆盖 - 配置阶段校验不支持的架构并直接报错 因此示例目录迁移为: text csrc/<op_name>/<NPU_ARCH>/<op_name>.asc 当前 PR 中 add/sqrt/gelu/layer_norm 均迁移到 dav-2201 目录。 ### 3. 算子发现从手写遍历改为按架构目录收敛 原 recursive_add_subdirectory() 会扫描 csrc 下每个算子的 ${NPU_ARCH}/CMakeLists.txt,但配合旧的 ascend910b 默认值时,目录名和真实编译参数存在错位。 新实现按如下规则发现算子: text csrc/*/${NPU_ARCH}/CMakeLists.txt 并对结果排序后逐个 add_subdirectory(),保证构建输入稳定。如果当前架构下没有算子目录,会输出 warning,顶层仍可生成 dummy extension module,便于定位问题而不是在隐式变量处失败。 ### 4. 算子编译单元改为 object target 原 add_sources() 宏会: - 清理/重置部分全局 CMake 变量 - 递归查找 .cpp - 手动设置 LANGUAGE CXX 和 COMPILE_FLAGS - 将 $<TARGET_OBJECTS:...> 写入全局 cache 变量 OBJECTS_LIST 这类全局可变状态不利于维护,也容易受 CMake 配置顺序影响。 新方案提供: cmake ascend_ops_add_current_op(OP_TARGET) 每个算子目录调用后会生成独立 object library,target 名包含算子名和 NPU_ARCH,例如 add_dav_2201_obj。函数内部负责: - 查找当前目录下的 .asc 源文件 - 为该 object target 添加通用编译选项 - 显式追加 --npu-arch=${NPU_ARCH} - 添加当前算子目录和公共 include 目录 - 将 object target 注册到全局 property ASCEND_OPS_OPERATOR_TARGETS 顶层 _C extension 再从 ASCEND_OPS_OPERATOR_TARGETS 中收集 $<TARGET_OBJECTS:${OPERATOR_TARGET}>,并在存在算子 target 时链接这些 target。这样算子自身需要的库可以留在各自目录,例如: cmake ascend_ops_add_current_op(OP_TARGET) target_link_libraries(${OP_TARGET} PUBLIC platform) target_link_libraries(${OP_TARGET} PUBLIC tiling_api) ### 5. Python 构建入口保持轻量 setup.py 不再负责把 NPU_ARCH 翻译成 CMake 参数。架构选择统一留给 CMake 层处理,Python 侧只传入 Torch/Torch NPU 路径和构建类型。 同时 Python 构建入口优先选择 Ninja: - 环境中存在 ninja 时使用 -G Ninja - 否则回退到 Unix Makefiles requirements.txt 补充 ninja,使示例默认构建路径更稳定。 ### 6. 新增算子的维护方式 新增算子只需要按目标架构创建目录和 .asc 文件: text csrc/<op_name>/<NPU_ARCH>/CMakeLists.txt csrc/<op_name>/<NPU_ARCH>/<op_name>.asc CMakeLists.txt 的最小内容为: cmake ascend_ops_add_current_op(OP_TARGET) 如果算子需要额外库或编译选项,可继续对 ${OP_TARGET} 调用 target_link_libraries()、target_compile_options() 等 target 级 CMake API,不需要修改顶层对象列表或全局变量。 ## 关联的Issue 无 ## 测试 测试结果: text 119 passed, 1 warning in 6.80s ## 文档更新 更新 examples/fast_kernel_launch_example/README.md: - 补充默认 NPU_ARCH=dav-2201、可通过环境变量覆盖,以及当前支持 dav-2201/dav-3510 - 将新增算子开发说明从 .cpp + add_sources("--npu-arch=...") 更新为 .asc + ascend_ops_add_current_op(OP_TARGET) ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:构建重构 See merge request: cann/ops-math!2520 | 4 个月前 |
| 【描 述】 解决_add_example_aicpu eager模式下头文件找不到 Co-authored-by: j00427146<jialimin1@huawei.com> # message auto-generated for no-merge-commit merge: !2396 merge issue_1332 into master 【描 述】 解决_add_example_aicpu eager模式下头文件找不到 Created-by: jialimin1 Commit-by: j00427146 Merged-by: cann-robot Description: ## 描述 1、解add_example_aicpu eager模式下头文件找不到问题 2、修改aclnnLeftShift、aclnnLeftShifts、aclnnTriangularSolve确定性计算说明 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> ## 关联的Issue Issue##1332 <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 修复前:  修复后:  <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2396 | 4 个月前 |
| feat: 新增 Add 算子 C API(asc_simd)风格示例工程 Co-authored-by: songkai111<songkai16@huawei.com> # message auto-generated for no-merge-commit merge: !2708 merge master into master feat: 新增 Add 算子 C API(asc_simd)风格示例工程 Created-by: songkai111 Commit-by: songkai111 Merged-by: cann-robot Description: ## 描述 新增 Add 算子的 C API(asc_simd)风格示例工程 add_example_c_api,展示使用 C API 方式开发 AI Core 算子的完整流程,区别于传统 C++ 类方式的 AscendC API。 ### 改动原因 现有示例仅包含 C++ 类方式(AscendC API)和 AI CPU 方式的算子开发样例,缺少 C API(asc_simd)风格的示例。本 PR 补充了该开发方式的端到端示例,方便开发者参考。 ### 改动方法 1. 新增 examples/add_example_c_api/ 目录,包含完整的算子工程结构: - op_kernel/:使用 C API(asc_simd)实现加法 kernel,核心接口包括 asc_init()、asc_copy_gm2ub_sync()、asc_add_sync()、asc_copy_ub2gm_sync() - op_host/:Tiling 实现、算子定义(OpDef)、InferShape 实现 - op_graph/:图推理(InferShape/InferDataType)及 proto 定义 - examples/:aclnn 调用样例(test_aclnn_add_example_c_api.cpp) 2. 算子定义支持 ascend910b、ascend910_93、ascend950 硬件平台 3. 输入输出仅支持 FLOAT 数据类型,4 维 ND 格式 4. 更新 examples/README.md 添加新示例目录说明和样例表格条目 ## 关联的Issue - #1535 ## 测试 提供 aclnn 调用样例(test_aclnn_add_example_c_api.cpp),使用 32×4×4×4 的 FLOAT 张量进行端到端验证,计算 x1 + x2 = y 并打印结果。 ## 文档更新 - 新增 examples/add_example_c_api/README.md,说明产品支持情况、功能说明、参数说明、约束说明、调用方式和 Kernel 开发方式 - 更新 examples/README.md 添加 add_example_c_api 目录结构和样例表格 ## 类型标签 - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/ops-math!2708 | 3 个月前 |