昇腾社区首页
EN
注册

编程接口

本节介绍接口分类以及调用接口时依赖的头文件和库文件。

接口分类

接口名以acl作为前缀,命名风格为:acl+接口类别缩写+操作动词+对象,其中操作动词和对象均采用首字母大写。其中,媒体数据处理V2版本下的接口命名例外,这一类接口命名以“hi_mpi”开头。下文为了描述方便,将本文中的接口统称为acl接口。

表1 接口类别列表

接口名前缀

描述

acl

系统配置类接口

aclrt

运行时资源管理类的接口

aclop

单算子模型执行类的接口

aclblas

blas类接口

aclmdl

模型推理类的接口

acldvpp或aclvdec或aclvenc

媒体数据处理V1版本的接口

hi_mpi

媒体数据处理V2版本的接口

aclprof

Profiling配置类接口

acltdt

Tensor数据传输接口

aclfv

特征向量检索接口

调用接口依赖的头文件和库文件说明

安装固件、驱动及CANN软件包后,编译、运行应用程序时才能引用到acl接口的头文件、库文件。

您需要根据实际使用的acl接口来include依赖的文件,各头文件的用途如下表所示。

acl接口的头文件在“${INSTALL_DIR}/include/”目录下,库文件在“${INSTALL_DIR}/lib64/”目录下。${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/ascend-toolkit/latest。

编译acl接口程序时,请按照include的头文件依赖对应的库文件,如果引用多余的so文件(例如libascendcl.a),可能导致版本功能异常或后续版本升级时存在兼容性问题。

表2 头文件列表

定义接口的头文件

用途

对应的库文件

acl/acl_base.h

用于定义基本的数据类型(例如aclDataBuffer、aclTensorDesc等)及其操作接口、枚举值(例如aclFormat)、日志管理接口等。

libascendcl.so

acl/acl.h

该头文件中已包含acl/acl_mdl.h、acl/acl_rt.h、acl/acl_op.h。包含acl.h文件后,可以引用初始化/去初始化、Device管理、算力Group查询与设置、Context管理、Stream管理、同步等待、内存管理、模型加载与执行、单算子执行(含部分接口)等接口。

libascendcl.so

acl/acl_prof.h

用于定义Profiling配置的接口。

libmsprofiler.so

说明:

为了兼容旧版本,旧版本中支持使用libascendcl.so,但后续版本这种方式会废弃,建议使用libmsprofiler.so,防止后续版本出现兼容性问题。

acl/ops/acl_cblas.h

用于定义CBLAS接口。

libacl_cblas.so

acl/ops/acl_dvpp.h

用于定义媒体数据处理V1版本的接口。

libacl_dvpp.so

acl/ops/acl_fv.h

用于定义特征向量检索的接口。

libacl_retr.so

acl/acl_op_compiler.h

用于定义aclopCompile、aclopCompileAndExecute、aclSetCompileopt等算子在线编译相关的接口、数据类型、枚举值等。

libacl_op_compiler.so

acl/acl_tdt.h

用于定义Tensor数据传输接口。

libacl_tdt_channel.so

acl/acl_tdt_queue.h

用于定义共享队列管理、共享Buffer管理接口。

libacl_tdt_queue.so

acl/dvpp/hi_dvpp.h

用于定义媒体数据处理V2版本的接口。

libacl_dvpp_mpi.so

acl/media目录下:

hi_mpi_vi.h

hi_common_vi.h

hi_common_dis.h

hi_common_gdc.h

hi_media_common.h

hi_media_type.h

hi_mpi_sys.h

用于定义VI(Video Input)视频数据获取功能的接口。

libacl_vi_mpi.so

libacl_dvpp_mpi.so

acl/media目录下:

hi_mpi_isp.h

hi_common_isp.h

hi_common_3a.h

hi_mpi_ae.h

hi_common_ae.h

hi_mpi_awb.h

hi_common_awb.h

hi_common_sns.h

hi_media_common.h

hi_media_type.h

hi_mpi_sys.h

用于定义ISP(Image Signal Processing)系统控制功能的接口。

libacl_isp_ae_mpi.so

libacl_isp_awb_mpi.so

libacl_isp_mpi.so

libacl_dvpp_mpi.so

acl/media目录下:

hi_mpi_vpss.h

hi_media_common.h

hi_media_type.h

hi_mpi_sys.h

用于定义VPSS(Video Process Sub-System)图像处理功能的接口。

libacl_vpss_mpi.so

libacl_dvpp_mpi.so

acl/media/hi_mipi_rx.h

用于定义MIPI Rx ioctl命令字。

-

acl/media目录下:

hi_mpi_audio.h

hi_common_aio.h

用于定义频输入、音频输出功能的接口。

libacl_audio_mpi.so

acl/media/hi_acodec.h

用于定义音量调整的命令字。

-

acl/media目录下:

hi_common_vo.h

hi_mpi_vo.h

用于定义视频输出接口。

libacl_vo_mpi.so

acl/media/hi_mpi_hdmi.h

用于定义对接外设的HDMI接口。

libacl_hdmi_mpi.so

acl/media/hi_mpi_tde.h

用于定义TDE图形绘制接口。

libacl_tde_mpi.so

acl/media/hifb.h

用于定义叠加图形层管理接口。

-

aclnn/acl_meta.h

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

libnnopbase.so

aclnn/aclnn_base.h

定义了NN(Neural Network)算子、融合算子API依赖的基础接口,即aclnnInit和aclnnFinalize。

libnnopbase.so

aclnnop/aclnn_*.h

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

说明:

为兼容旧版本,旧版本NN/融合算子头文件路径是aclnnop/level2/aclnn_*.h,但后续版本该路径会废弃,建议使用新路径aclnnop/aclnn_*.h,防止后续版本出现兼容性问题。

定义了NN(Neural Network)算子、融合算子API。

  • 动态库: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/融合算子接口示例代码

acldvppop目录下:

acldvpp_base.h

acldvpp_op_api.h

用于定义DVPP媒体数据处理类算子的功能接口。

libacl_dvpp_op.so