AI Core还是AI CPU?CANN ops-math仓库AI CPU算子开发完全实践指南

发布时间:2026/9/17 18:35:24

AI Core还是AI CPU?CANN ops-math仓库AI CPU算子开发完全实践指南 AI Core还是AI CPUCANN ops-math仓库AI CPU算子开发完全实践指南【免费下载链接】ops-math本项目是CANN提供的数学类基础计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math你是否在为CANN ops-math仓库贡献算子时纠结我的算子该跑在 AI Core 还是 AI CPU 上别担心本文就用最通俗的方式带你走通AI CPU 算子开发全流程——从创建工程到编译部署一个完整可跑通的实战指南新手也能照着做。一分钟搞懂AI Core 和 AI CPU 有什么区别在 CANN 架构中NPU 内部有多种硬件单元算子按运行位置分为两类对比项AI Core 算子AI CPU 算子编程语言Ascend C标准 C运行单元AI Core 硬件单元AI CPU 硬件单元开发难度需掌握 Tiling、Ascend C 等概念更低普通 C 即可上手适用场景大规模并行数值计算主流少量不适合 AI Core 实现的控制类/复杂逻辑算子选型建议绝大多数数学计算类算子加、乘、卷积等都应优先使用AI Core只有当计算逻辑难以用 AI Core 表达如复杂分支、依赖 CPU 库时才考虑AI CPU。对应的开发文档分别是AI Core 开发指南aicore_develop_guide.mdAI CPU 开发指南aicpu_develop_guide.mdAI CPU 算子开发全流程5 步走通以仓库自带的AddExampleAicpu加法算子为例AI CPU 算子开发的标准流程为工程创建 → 算子定义 → Kernel实现 → 编译部署 → 算子验证完整样例代码位于 examples/add_example_aicpu/ 目录强烈建议边看文档边翻样例。第 1 步一键创建算子工程目录进入项目根目录执行以下命令即可自动生成标准算子目录骨架# ${op_class} 为算子类型如 math${op_name} 为算子小写下划线名 bash build.sh --genop_aicpu${op_class}/${op_name}创建成功后目录结构一目了然与 AI Core 相比明显更精简没有 Tiling 相关目录${op_name} ├── examples # 算子调用示例aclnn / 图模式 ├── op_host # Host 侧实现InferShape 形状推导 ├── op_kernel_aicpu # Device 侧 Kernel 实现AI CPU 核心代码 │ ├── ${op_name}_aicpu.cpp # Kernel 入口 Compute 实现 │ ├── ${op_name}_aicpu.h # 算子类声明 │ └── ${op_name}.json # 算子信息库 └── CMakeLists.txt第 2 步算子定义README json算子定义需要交付两个文件README.md写清算子功能、计算公式、参数与约束。可参考 add_example_aicpu/README.md其中定义了y x1 x2的加法语义与参数表。${op_name}.json算子信息库声明输入输出名称、支持的数据类型、运行的 engine 等。例如 add_example.json 中就指定了engine:DNN_VM_AICPU——这就是标识该算子跑在 AI CPU 上的关键配置。第 3 步实现 Kernel核心代码只有 3 件事AI CPU 算子的 Kernel 实现非常直接共 3 步全部写在op_kernel_aicpu/目录① 声明算子类继承CpuKernel基类重写Compute函数。参考 add_example_aicpu_aicpu.hnamespace aicpu { class AddExampleCpuKernel : public CpuKernel { public: ~AddExampleCpuKernel() default; uint32_t Compute(CpuKernelContext ctx) override; }; } // namespace aicpu② 实现 Compute 函数从上下文获取输入输出 Tensor → 合法性校验 → 按数据类型分发执行计算。核心逻辑就是一个普通的 for 循环加法见 add_example_aicpu_aicpu.cppuint32_t AddExampleCpuKernel::Compute(CpuKernelContext ctx) { Tensor* input0 ctx.Input(0); Tensor* input1 ctx.Input(1); Tensor* output ctx.Output(0); // 空指针与空数据校验后按 DT_FLOAT / DT_INT32 分发 // 最终执行y[i] x0[i] x1[i] }③ 注册算子一行宏完成注册让框架能找到你的 Compute 函数REGISTER_CPU_KERNEL(kAddExample, AddExampleCpuKernel); 除了 Kernel还需要在 Host 侧实现InferShape运行时推导输出 shape样例见 add_example_infershape.cpp逻辑是把输入 shape 原样拷贝给输出。另外注意AI CPU 算子不支持自动生成 aclnn 接口需要参考 math/cross/op_api/ 相关路径手工补齐 aclnn 适配代码。第 4 步编译部署生成 .run 安装包交付件齐备后一条命令编译出自定义算子安装包# --soc 指定 NPU 型号如 ascend910bAtlas A2/ ascend910_93Atlas A3 bash build.sh --pkg --soc${soc_version} --ops${op_name} -j16出现如下提示即编译成功Self-extractable archive cann-ops-math-${vendor_name}_linux-${arch}.run successfully created.执行生成的.run文件即可安装算子会落到${ASCEND_HOME_PATH}/opp/vendors目录下如需卸载运行opp/vendors/custom_math/scripts/uninstall.sh脚本。第 5 步算子验证UT aclnn 调用部署完成后先配置环境变量再做两级验证export LD_LIBRARY_PATH${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_math/op_api/lib:${LD_LIBRARY_PATH} export ASCEND_CUSTOM_OPP_PATH${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_mathUT 验证通过 Kernel 单元测试快速检查计算正确性样例见 test_add_example_aicpu.cppaclnn 调用验证在应用中通过 aclnn 接口端到端调用算子样例见 test_aclnn_add_example.cpp如需入图运行还有图模式样例 test_geir_add_example.cppAI Core 开发有什么不同快速对比如果你最终选择 AI Core 路线流程会更长一步多出Tiling 实现和图模式适配两个环节工程创建 → 算子定义 → Tiling实现 → Kernel实现 → 图模式适配 → aclnn适配 → 编译部署 → 算子验证对应命令是bash build.sh --genop${op_class}/${op_name}注意没有_aicpu后缀完整指引请参考 AI Core 算子开发指南。常见问题 FAQQ1什么时候必须用 AI CPUA当算子逻辑复杂大量分支、动态控制流、依赖难以移植到 AI Core 的算法、或需要 CPU 侧第三方库如 Eigen 支持半精度时。仓库中 identity、case_condition 等控制流类算子就是典型 AI CPU 实现。Q2AI CPU 算子性能如何AAI CPU 适合逻辑复杂但数据量不大的算子对大规模数值计算AI Core 的并行吞吐远高于 AI CPU务必优先评估 AI Core 方案。Q3开发前需要准备什么环境A先完成 CANN 环境准备与源码下载参考项目 README.md并具备 C 基础。编译部署的细节可查阅 编译安装文档。总结一张表带走步骤关键动作参考文件工程创建build.sh --genop_aicpu生成目录build_genop.sh算子定义README json 信息库add_example.jsonKernel 实现CpuKernel 派生 Compute 注册add_example_aicpu_aicpu.cpp编译部署build.sh --pkg生成 .run 包build_lib.sh算子验证UT aclnn 调用tests/utAI CPU 算子开发看似玄乎拆开来就是写 C → 注册 → 编译 → 验证四件套。现在就打开 examples/add_example_aicpu/ 目录照着样例动手写下你的第一个 CANN 算子吧【免费下载链接】ops-math本项目是CANN提供的数学类基础计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/17 18:35:24

C# SerialPort串口通信实战:参数、收发与排错

简介:这是一份面向.NET开发者与工控、嵌入式上位机方向学习者的串口通信入门资料,聚焦C#语言在.NET平台下与串口设备进行数据交互的完整实现思路,适合刚接触SerialPort类、需要打通PC与单片机或仪器通信链路的初中级开发者参考。资源包共1个文…

2026/9/17 18:30:23

基于BP神经网络PID的直流电动机调速仿真与单片机移植

简介:围绕BP神经网络PID控制算法在直流电动机调速系统中的应用,这份docx文档完整呈现了从理论到仿真的设计思路,适合自动化、电气工程及智能控制方向的学生与工程师参考。内容涵盖神经网络发展脉络、BP神经网络PID控制器原理、无刷直流电机数…

2026/9/17 19:35:30

智能停车场系统:LoRaWAN+Redis GEO+双校验实战架构

简介:本资源是一份完整的智能停车场系统技术方案文档,面向智慧城市、交通管理及安防集成领域的工程师、项目实施人员与方案设计师,聚焦解决城市停车难、找车难、管理效率低等实际问题。方案深度融合车牌自动识别、视频车位检测、全视频诱导及…

2026/9/17 19:35:30

ECU功能说明书深度解析:嵌入式开发与HIL测试的接口契约指南

简介:本资源是一份面向汽车电子工程师、维修技师及高职院校机电类专业学生的ECU功能技术说明书,聚焦发动机电子控制单元的核心原理与实操应用。文档系统梳理了ECU在发动机控制、转速调节、燃油喷射、点火时序、自动变速器协同及制动系统(ABS/…

2026/9/16 12:52:37

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/17 0:03:13

WiFi密码安全测试:从原理到实战的字典暴力破解指南

1. 写在前面:我为什么要研究WiFi密码这件事先交代一下背景。我身边有不少朋友,家里的WiFi密码常年是"12345678"或者"88888888",问就是"好记"。直到有一次,隔壁邻居蹭网蹭到我家路由器后台都进不去&…

2026/9/17 0:03:13

redis-py服务控制与监控函数实战:从ping到slowlog的巡检指南

我用 redis-py 写了快五年的业务代码,坦白说,真正让我觉得这个客户端“像一个成熟工具箱”的,不是 get/set 那套基本操作,而是它那批专门做服务控制与状态监控的辅助函数。日常开发里,大家把redis.Redis(host..., deco…

2026/9/17 0:03:13

SpringBoot+Vue3实现中小企业设备管理系统开发实践

1. 项目概述与核心价值中小企业设备管理系统是制造业、服务业等领域的基础信息化工具。传统设备管理往往依赖Excel表格或纸质记录,存在数据孤岛、流程混乱、维护成本高等痛点。这套基于Java SpringBootVue3MyBatis的技术方案,通过前后端分离架构实现了设…

2026/9/16 22:55:57

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/16 22:56:09

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/16 22:56:16

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码