昇腾社区首页
中文
注册

单算子API执行

本章介绍了支持以单算子API执行方式调用算子的接口,如表1所示,提供了详细的接口介绍,包括接口原型、功能描述、参数说明、调用示例等,指导用户快速上手调用算子API,以支撑AI业务的高效应用开发。

安装固件、驱动及CANN软件包后,编译、运行应用程序时才能引用到本章节接口的头文件、库文件。头文件在“${INSTALL_DIR}/include/”目录下,库文件在“${INSTALL_DIR}/lib64/”目录下。${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。

算子接口的调用流程请参见单算子API执行接口调用流程,其调用示例(以NN算子调用为例)请参见调用NN/融合算子接口示例代码

表1 算子接口列表

接口分类

说明

头文件

库文件

NN算子接口

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

参考AOL算子加速库接口参考中“NN算子接口”。

aclnnop/aclnn_*.h

(*表示具体的算子名称)

说明:

为兼容旧版本,旧版本NN/融合算子头文件路径是aclnnop/level2/aclnn_*.h,但后续版本该路径会废弃,建议使用新路径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(随机数算子库)
须知:
  • 若不希望已安装的算子二进制包或已构建好的模型因版本变更而导致业务功能、性能及精度变化,可使用静态库部署。
  • 部署Ascend-cann-kernels时,--install安装除静态库外的所有文件,--devel安装动态库和静态库,--feature安装特定领域算子库,各安装模式的介绍参见CANN 软件安装指南“附录A:参考信息 > 参数说明
  • Ascend-cann-kernels包支持独立升级,升级说明参见CANN 软件安装指南“升级 > 升级CANN
  • 算子编译和运行过程参见调用NN/融合算子接口示例代码

融合算子接口

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

参考AOL算子加速库接口参考中“融合算子接口”。

说明:

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

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

DVPP算子接口

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

参考AOL算子加速库接口参考中“DVPP算子接口”。

acldvppop/acldvpp_base.h

acldvppop/acldvpp_op_api.h

libacl_dvpp_op.so