CANN算子基础框架文档

发布时间:2026/7/4 13:33:23

CANN算子基础框架文档 文档中心【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase目录结构Docs目录结构说明如下├── zh ├── api # API类文档 ├── appendix # 附录类文档如基本概念、目录结构等 ├── figures # 图片目录 ├── ... ├── install # 安装部署类文档 ├── CONTRIBUTING_DOCS.md # 文档贡献说明 ├── QUICKSTART.md # 快速入门 └── README.md进阶教程指南类文档算子调用/开发过程中会使用本项目提供的基础框架能力和公共依赖项与opbase框架相关的指南如下文档说明算子调用指南提供算子库的调用方法和调用流程介绍包括aclnn API、图模式调用等。各算子库math、nn、cv、transformer调用指南基本一致以math仓为例。算子开发指南提供AI Core/AI CPU算子的开发流程和交付件介绍。各算子库math、nn、cv、transformer开发指南基本一致以math仓为例。aclnn API开发指南正在建设中欢迎您关注和提问API类文档opbase API是所有算子库依赖的基础框架API其提供基础的调度框架和公共依赖项。分类头文件说明aclnn Meta API定义在项目include/nnopbase/aclnn目录下的头文件。调用算子或aclnn API时提供nnopbase框架基础接口、结构体等包括aclTensor/aclScalar等对象的创建/释放、各类属性信息的获取和设置等。opdev API定义在项目include/nnopbase/opdev目录下的头文件。开发算子或aclnn API时提供nnopbase框架调度和管理类接口包括aclnn缓存、workspace复用等场景。op_common API定义在项目pkg_inc/op_common目录下的头文件。调用或开发算子时提供op_common框架公共日志等能力如Metadef、Log日志等。更多文档文档说明标准算子精度标准面向基于标准工程开发的算子提供符合商用交付准则的算子精度规范。生态算子精度标准面向基于简易工程开发的算子提供符合生态开源贡献准则的算子精度规范。附录基本概念Level0层接口简称L0接口表示调用单Kernel的Host侧API提供了细颗粒API单Kernel下发和算子API开发的基础结构体如Tensor定义等和公共基础能力如workspace复用、引擎调度等上层应用或者L2接口可通过L0接口的快速组装实现高性能计算。L0接口返回值类型是Tensor的类型结构如aclTensor*、std::tupleaclTensor*, aclTensor*、aclTensorList*最后一个参数固定为aclOpExecutor *executor类型与名称均不可变示例如下aclTensor* AddNd(aclTensor *x1, aclTensor *x2, aclOpExecutor *executor)L0接口命名空间为“namespace l0op”接口名为“${op_type}${format}${dtype}”其中${op_type}为算子名${format}为算子输入/输出数据格式${dtype}为算子输入/输出数据类型对于非常规的输入/输出数据类型需带上数据类型匹配关系。调用示例如下l0op::AddNd //Add算子输入均按ND计算 l0op::MatMulNdFp162Fp32 //MatMul算子输入输出均按ND格式计算并且2代表“To”表示输入fp16、输出fp32 l0op::MatMulNzFp162Fp16 //MatMul算子输入输出均按NZ格式计算并且2代表“To”表示输入与输出都是fp16Level2层接口简称L2接口是对L0接口的高层级封装内部通过调用单个或多个L0接口实现更灵活功能表示更上层的Host侧APIaclnn API通常被称为L2接口。该类接口提供单算子直调方式屏蔽了算子内部实现逻辑用户直接调用L2接口即可实现调用算子。L2接口返回值类型是aclnnStatus一般包括获取workspaceSize和算子执行“两段式接口”aclnnStatus aclnnXxxGetWorkspaceSize(const aclTensor *src, ..., aclTensor *out, ..., uint64_t *workspaceSize, aclOpExecutor **executor); aclnnStatus aclnnXxx(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream);aclnnXxxGetWorkspaceSize最后两个参数固定为(uint64_t *workspaceSize, aclOpExecutor **executor)名称和类型均不可变。aclnnXxx接口参数固定为(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)。其中aclnnXxxGetWorkspaceSize为第一段接口主要用于计算本次API调用过程中需要多少workspace内存获取到本次计算所需的workspaceSize后按照workspaceSize申请NPU内存然后调用第二段接口aclnnXxx执行计算。“Xxx”表示对应的算子类型如Add算子。说明workspace是指除输入/输出外API在AI处理器上完成计算所需要的临时内存。二阶段接口aclnnXxx(...)不能重复调用如下调用方式会出现异常aclnnXxxGetWorkspaceSize(...) aclnnXxx(...) aclnnXxx(...)原地算子接口表示在原地址进行更新操作的算子接口其计算过程中输入和输出为同一地址以减少不必要的内存占用。aclnn类原地算子接口名一般定义为aclnnInplaceXxxGetWorkspaceSize一阶段接口、aclnnInplaceXxx二阶段接口。build说明build参数说明【免费下载链接】opbase本项目是CANN算子库的基础框架库为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻