昇腾CANN《AOL算子加速库文档》上新,快来昇腾社区文档中心体验吧!

举报
昇腾CANN 发表于 2025/03/03 10:26:45 2025/03/03
62 0 0
【摘要】 算子加速库(Ascend Operator Library,简称AOL )提供了丰富的深度优化、硬件亲和的高性能算子,包括神经网络(Neural Network,NN)算子库、DVPP(Digital Video Pre-Processor)算子库、以及加速大模型计算的Flash Attention等融合算子库,为神经网络在昇腾硬件上加速计算奠定了基础。

算子加速库(Ascend Operator Library,简称AOL )提供了丰富的深度优化、硬件亲和的高性能算子,包括神经网络(Neural Network,NN)算子库、DVPP(Digital Video Pre-Processor)算子库、以及加速大模型计算的Flash Attention等融合算子库,为神经网络在昇腾硬件上加速计算奠定了基础。关于AOL的介绍,可以参考前期博文《一文了解AOL算子加速库》。

近期,昇腾社区文档中心全新上线《AOL算子加速库文档》,支持开发者快速查询,访问入口:文档链接

 1.PNG

文档涵盖AOL算子加速库接口

AOL算子加速库主要包括以下几类,且分类清晰,支持根据接口列表快速查询:

  • NN算子:CANN基础算子,主要覆盖TensorFlow、Pytorch、MindSpore、ONNX等框架中深度学习算法相关的计算类型,例如常见的Softmax、MatMul、Convolution等。目前该类算子API在整个算子库接口中占最大比重。
  • 融合算子:由多个独立的基础“小算子”(如向量Vector、矩阵Cube等)融合而成,功能与多个小算子功能等价,性能收益往往优于小算子。例如大语言模型(Large Language Model, LLM)中核心计算Scaled dot-product attention(基于矩阵乘法的注意力机制),其核心实现如下图,图中将Matmul算子(Cube)、Scale算子(Vector)、Mask算子(Vector)、SoftMax算子(Vector)融合为一个大算子。能够达到提高计算效率、内存利用率、数据处理效率等效果。

             2.png

  • DVPP算子:提供高性能视频/图片编解码、图像裁剪缩放等预处理能力。

昇腾已开放部分融合算子代码样例,开发者可以访问https://gitee.com/ascend/cann-ops-adv进行体验和使用。开发者可以基于开放的融合算子代码样例和Ascend C算子编程API开展定制优化,从而提升大模型运行性能或优化资源占用,构建差异化算法竞争力。

此外,调用上述算子时,依赖aclTensor、aclScalar、aclIntArray等数据结构,这些可通过“基础接口”创建,如aclCreateTensor、aclCreateScalar接口。

上述算子均提供了基于C语言的API接口,一般定义为“两段式接口”,例如:

aclnnStatus aclnnAddGetWorkspaceSize(const aclTensor* self, const aclTensor* other, const aclScalar* alpha, aclTensor* out, uint64_t* workspaceSize, aclOpExecutor** executor) 
aclnnStatus aclnnAdd(void* workspace, uint64_t workspaceSize, aclOpExecutor* executor, aclrtStream stream)

用户可直接调用API执行算子,无需提供额外的IR(Intermediate Representation,中间表示)定义,该方式被称为单算子API执行调用。在使用时,必须先调用第一段接口aclnnAddGetWorkspaceSize,计算本次API调用过程中需要多少workspace内存,获取到本次计算所需的workspaceSize后,按照workspaceSize申请NPU内存,然后调用第二段接口aclnnAdd执行计算。整体调用流程如下,更详细的介绍请访问《AscendCL应用开发(C&C++)》中“单算子调用”章节。

 3.png

文档涵盖基于Ascend IR定义的算子规格信息

文档还提供了基于Ascend IR定义的算子信息,典型使用场景包括:

  1. 模型开发与优化:在模型设计阶段,可以参考算子规格选择合适的算子,确保模型功能和性能效果。
  2. 硬件适配:将模型部署到昇腾硬件时,算子规格可以帮助用户确保算子与硬件兼容。
  3. 软件集成:在将CANN集成到深度学习框架时,算子规格帮助开发者理解如何调用和优化算子。
  4. 自定义算子开发:开发自定义算子时,参考算子规格定义接口,确保与现有算子一致。

此外,本文档还提供了CANN支持的主流深度学习框架原生IR定义的算子信息,包括TensorFlow、Caffe、ONNX。

更多学习资源

欢迎访问昇腾社区AOL学习专区:https://www.hiascend.com/aol

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。