简介【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs概述须知本算子库提供的算子均为CANN内置算子您可以直接调用如需自定义算子请参考《Ascend C算子开发指南》完成算子开发。CANN算子源码已在Gitcode CANN开源项目开放您可以进一步了解社区生态或算子开发和贡献流程。CANNCompute Architecture for Neural Networks提供了一系列丰富且经过深度优化、硬件亲和的高性能算子可直接应用于AI业务为网络在AI处理器上的加速计算奠定了基础。算子库在CANN架构中的位置如图1所示主要包含如下算子库Math库数值计算类算子库提供不同维度的数值处理与计算算子例如Add、Abs等覆盖张量形态变换、基础数学运算、随机数生成等场景。NN库神经网络类算子Neural Network提供深度学习模型中常见的计算算子例如卷积、矩阵乘、激活函数、归一化等。CV库计算机视觉类算子Computer Vision提供图像处理和目标检测算子例如GridSample等。Transformer库大模型计算类算子提供Transformer核心算子例如Attention类、LayerNorm类、通算融合类简称MC2等。Opbase库所有算子库依赖的基础框架库提供基础调度能力如aclTensor创建/释放、workspace复用等和公共依赖能力。图 1算子库架构图![fig1](https://raw.gitcode.com/cann/docs/raw/a173bdbfa81bbfd36d1c4da672d78301fb678d36/docs/ops-lib/zh/figures/算子库架构图.png 算子库架构图?utm_sourcegitcode_repo_files)如需调用算子库中的算子CANN提供了多种调用方式请根据实际情况选择。aclnn API针对全量算子提供了一套相应的C API方便Host侧调用简称单算子API或者算子Host API调用方式调用流程如图2所示。PyTorch API针对非PyTorch原生但常见的大模型算子提供了一套兼容PyTorch原生风格的torch_extension API。该API借助JIT机制torch.utils.cpp_extension.load在首次调用时即时编译C Kernel Wrapper将PyTorch函数桥接到aclnn API。同时它还通过GE Converter支持TorchAir图模式。GE图模式调用通过算子Ascend IRIntermediate Representation定义以构图方式实现算子调用调用原理参见《图开发指南》中“编程指南”这里不详细阐述。图 2aclnn API调用流程![fig2](https://raw.gitcode.com/cann/docs/raw/a173bdbfa81bbfd36d1c4da672d78301fb678d36/docs/ops-lib/zh/figures/aclnn-API调用流程.png aclnn-API调用流程?utm_sourcegitcode_repo_files)使用说明V版本演进功能演进过程中算子或算子API可能会存在多个V版本使用时请选择最高V版本高版本默认兼容低版本能力。环境准备通过aclnn API调用算子时请提前安装CANN Toolkit包、ops算子包具体操作参见《CANN 软件安装》。通过PyTorch API调用算子时请提前安装CANN Toolkit包、ops算子包、torch_npu包注意与Toolkit包版本配套具体操作参见《CANN 软件安装》和《Ascend Extension for PyTorch 软件安装》。通过GE构图方式调用算子Ascend IR时请提前安装CANN Toolkit包、ops算子包具体操作参见《CANN 软件安装》。接口定义路径调用aclnn API时需include依赖的文件一般头文件默认在${INSTALL_DIR}/include/目录库文件默认在${INSTALL_DIR}/lib64/目录。调用torch_extension API时需导入如下模块其中cann_ops_transformer定义在${INSTALL_DIR}/python/site-packages/cann_ops_transformer目录。import torch import torch_npu import cann_ops_transformer调用Ascend IR算子时其头文件路径为${INSTALL_DIR}/opp/built-in/op_graph/inc。其中${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例安装后文件默认存储路径为/usr/local/Ascend/cann。对于算子文档中未声明支持的场景如产品型号、数据类型、数据格式、数据维度等不推荐开发者使用当前版本不保证算子调用效果。昇腾虚拟化实例当前版本融合类算子暂不支持该功能。融合类算子是指由多个独立基础“小算子”如向量Vector、矩阵Cube等融合而成其功能与多个小算子等效而性能通常更优例如Flash Attention、通算融合算子简称MC2算子等。使用向导首次阅读本手册时建议先熟悉下表。该表将帮助您快速了解算子的分类、适用场景及头文件等信息。须知aclnn API调用从CANN 9.0.0版本开始整库文件libopapi.so废弃请使用libopapi_*.so子库文件以提升算子编译效率。aclnn API调用从CANN 8.5.0版本开始libaclnn_ops_infer、libaclnn_ops_train、libaclnn_math、libaclnn_rand静态库*.a和动态库*.so废弃请使用libopapi_*.so库文件替代。aclnn API调用从CANN 7.0.0版本开始头文件引用路径aclnnop/level2/aclnn_*.h废弃请使用新头文件路径aclnnop/aclnn_*.h替代。表 1使用向导使用场景操作指引说明依赖头文件或库文件1.算子库基础领域知识基本概念介绍算子的基本概念、术语及关键技术帮助用户更好地理解算子文档。-2.算子API调用时依赖哪些公共接口公共接口调用算子接口时依赖的公共Meta接口如创建aclTensor、aclScalar、aclIntArray等。头文件aclnn/acl_meta.h、aclnn/aclnn_base.h仅包含aclnnInit和aclnnFinalize库文件libnnopbase.so3.算子库中有哪些aclnn APIMath类接口数学计算类算子库提供Add、Abs等算子API。头文件引用每类总头文件后无需引用单API头文件每类API依赖的总头文件推荐aclnnop/aclnn_ops_math.h、aclnnop/aclnn_ops_nn.h、aclnnop/aclnn_ops_cv.h、aclnnop/aclnn_ops_transformer.h每个API依赖的头文件aclnnop/aclnn_*.h*表示具体算子名库文件aclnn API依赖的总库文件libopapi.so废弃每类API依赖的库文件libopapi_math.so、libopapi_nn.so、libopapi_cv.so、libopapi_transformer.soNN类接口Neural Network即神经网络类算子库提供Matmul等算子API。目前该类算子在整个算子库中占最大比重。CV类接口Computer Vision即计算机视觉类算子库提供GridSample等算子API。Transformer类接口大模型计算类算子库提供FlashAttention、MC2通算融合、MoEMixture of Experts等算子API。4.算子库有哪些Torch扩展接口torch_extension接口针对非PyTorch原生但常见的大模型算子提供PyTorch API。通过JIT即时编译C Kernel Wrapper将PyTorch函数桥接到aclnn API同时通过GE Converter支持TorchAir图模式。-5.算子库中Ascend IR算子规格信息Ascend IR算子规格说明罗列了基于Ascend IR定义的算子信息。-6.算子库相关知识附录提供开发aclnn API依赖的nnopbase接口提供算子开发/调用过程依赖的op_common公共接口介绍算子性能提升方法算子调用过程中常见FAQ和案例-表 1使用向导使用场景操作指引说明依赖头文件或库文件1.算子库基础领域知识基本概念介绍算子的基本概念、术语及关键技术帮助用户更好地理解算子文档。-2.算子API调用时依赖哪些公共接口当前版本不支持公共接口调用算子接口时依赖的公共Meta接口如创建aclTensor、aclScalar、aclIntArray等。头文件aclnn/acl_meta.h、aclnn/aclnn_base.h仅包含aclnnInit和aclnnFinalize库文件libnnopbase.so3.算子库中有哪些aclnn API当前版本不支持Math类接口数学计算类算子库提供Add、Abs等算子API。头文件引用每类总头文件后无需引用单API头文件每类API依赖的总头文件推荐aclnnop/aclnn_ops_math.h、aclnnop/aclnn_ops_nn.h、aclnnop/aclnn_ops_cv.h、aclnnop/aclnn_ops_transformer.h每个API依赖的头文件aclnnop/aclnn_*.h*表示具体算子名库文件aclnn API依赖的总库文件libopapi.so废弃每类API依赖的库文件libopapi_math.so、libopapi_nn.so、libopapi_cv.so、libopapi_transformer.soNN类接口Neural Network即神经网络类算子库提供Matmul等算子API。目前该类算子在整个算子库中占最大比重。CV类接口Computer Vision即计算机视觉类算子库提供GridSample等算子API。Transformer类接口大模型计算类算子库提供FlashAttention、MC2通算融合、MoEMixture of Experts等算子API。4.算子库中Ascend IR算子规格信息Ascend IR算子规格说明罗列了基于Ascend IR定义的算子信息。-5.算子库相关知识附录提供开发aclnn API依赖的nnopbase接口提供算子开发/调用过程依赖的op_common公共接口介绍算子性能提升方法算子调用过程中常见FAQ和案例-【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考