昇腾社区首页
中文
注册

接口简介

概述

为加速模型算力释放,CANN(Compute Architecture for Neural Networks)提供了算子加速库(Ascend Operator Library,简称AOL)。

该库提供了一系列丰富的深度优化、硬件亲和的高性能算子,如Neural Network、Digital Vision Pre-Processing算子等,为神经网络在昇腾硬件上加速计算奠定了基础。为方便开发者调用算子,提供了单算子API执行方式调用算子(基于C语言的API,无需提供IR(Intermediate Representation)定义),以便开发者快速且高效使能模型创新与应用,API的调用流程如图1所示。

此外,本文档还提供了不同深度学习框架IR(Intermediate Representation)定义的算子规格信息,支撑开发者自行构建网络模型。

本文档提供的CANN算子均为系统支持的算子,对于系统不支持的算子,支持开发者自定义,自定算子开发指导请参见Ascend C算子开发指南

图1 API调用流程

接口说明

本文档提供的不同领域算子接口或算子规格清单如表1所示,对应的产品支持情况参见表2

文档重点阐述了算子定义、功能描述、参数说明、约束限制和调用示例等,指导开发者快速上手调用算子和API。

调用部分算子或API时,需要include依赖的文件,头文件默认在“${INSTALL_DIR}/include/”目录,库文件默认在“${INSTALL_DIR}/lib64/”目录,${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。

  • 对于各类算子接口或算子规格/清单中未审明支持的场景(如产品型号、数据类型、数据格式、数据维度等),不推荐开发者使用,当前版本不保证其调用效果。
  • 调用算子过程中可能会遇到各类异常,可以参考“故障案例集 > 算子执行问题,该章列举了典型/高频的算子执行问题,辅助开发者进行问题定位和解决。
表1 AOL列表

分类

简介

头文件或库文件

备注

公共接口

调用NN算子、融合算子、DVPP算子API过程中依赖的公共Meta接口,如创建aclTensor、aclScalar、aclIntArray等。

  • 头文件:aclnn/acl_meta.h和aclnn/aclnn_base.h
  • 库文件:libnnopbase.so

-

NN算子接口

Neural Network算子,CANN内置的基础算子,接口前缀为aclnnXxx,主要覆盖TensorFlow、Pytorch、MindSpore、ONNX等框架中深度学习算法相关的计算类型,例如常见的Softmax、MatMul、Convolution等。

目前该类算子API在整个算子库中占最大比重。

  • 头文件:aclnnop/aclnn_*.h
  • 动态库:libopapi.so(可被划分如下领域,按需选装
    • libaclnn_ops_infer.so(网络算子推理库)
    • libaclnn_ops_train.so(网络算子训练库)
    • libaclnn_math.so(数学算子库)
    • libaclnn_rand.so(随机数算子库)
  • 静态库:
    • libaclnn_ops_infer_static.a(网络算子推理库)
    • libaclnn_ops_train_static.a(网络算子训练库)
    • libaclnn_math_static.a(数学算子库)
    • libaclnn_rand_static.a(随机数算子库)

本质是一套基于C语言的API,可直接调用API执行算子,无需提供额外的IR定义。该调用方式被称为单算子API执行调用,详细介绍参见“单算子调用 > 单算子调用流程

  • 调用NN、融合算子接口时,会直接调用算子二进制包(Ascend-cann-kernels)中已经编译好的算子,无需再编译算子。算子二进制包的安装请参见CANN软件安装指南
  • 调用DVPP算子接口时,无需再编译算子

融合算子接口

CANN内置的融合算子,接口前缀为aclnnXxx,由多个独立的基础“小算子”(如向量Vector、矩阵Cube等)融合而成,大算子功能与多个小算子功能等价,且大算子性能收益往往优于小算子。例如常见的Flash Attention、通算融合算子(简称MC2算子)等。

说明:

除了本文档提供的融合算子,您还可以单击Link访问Gitee cann-ops-adv仓获取代码开放的融合算子。

当前融合算子不支持使用昇腾虚拟化实例

DVPP算子接口

Digital Vision Pre-Processing算子,接口前缀为acldvppXxx,提供高性能视频/图片编解码、图像裁剪缩放等预处理API。

  • 头文件:acldvppop/acldvpp_base.h和acldvppop/acldvpp_op_api.h
  • 库文件:libacl_dvpp_op.so

CANN算子规格说明

罗列了基于Ascend IR定义的算子信息。

-

-

AI框架算子支持清单

罗列了主流AI框架原生IR定义的算子信息(如TensorFlow、Caffe等)。

-

-

表2 产品支持度表

产品型号

NN算子接口

融合算子接口

DVPP算子接口

CANN算子规格说明

TensorFlow算子清单

Caffe算子清单

ONNX算子清单

Atlas A2 训练系列产品/Atlas 800I A2 推理产品

√(部分支持)

x

Atlas 200I/500 A2 推理产品

√(部分支持)

x

x

Atlas 推理系列产品

√(部分支持)

√(部分支持)

x

Atlas 训练系列产品

√(部分支持)

x

x

Atlas 200/300/500 推理产品

x

x

x