头文件和库文件说明
本节介绍接口分类以及调用接口时依赖的头文件和库文件。
接口分类
接口名以acl作为前缀,命名风格为:acl+接口类别缩写+*,其中,*表示操作动词和对象,均采用首字母大写。下文为了描述方便,将本文中的接口统称为acl接口。
在acl接口中,参数顺序通常遵循输入参数在前、输出参数在后的原则。且需注意,不要因为某些参数是新增的,就将其随意添加到接口的末尾;相反,应将新的仅作为输入的参数放在输出参数之前。对于同时作为输入和输出的参数,情况会相对复杂,可能还需考虑与其他接口的一致性,需灵活处理。
接口名前缀 |
描述 |
|---|---|
acl |
系统配置类接口 |
aclrt |
运行时管理类的接口 |
aclop |
单算子模型执行类的接口 |
aclblas |
blas类接口 |
aclmdl |
模型推理类的接口 |
acldvpp或aclvdec或aclvenc |
媒体数据处理接口 其中,媒体数据处理V2版本下的接口命名例外,这一类接口命名以“hi_mpi”开头。 |
aclprof |
Profiling配置类接口 |
acltdt |
数据传输接口 |
aclfv |
特征向量检索接口 |
调用接口依赖的头文件和库文件说明
安装固件、驱动及CANN软件包后,编译、运行应用程序时才能引用到acl接口的头文件、库文件。
您需要根据实际使用的acl接口来include依赖的文件,各头文件的用途如下表所示。
acl接口的头文件在“${INSTALL_DIR}/include/”目录下,库文件在“${INSTALL_DIR}/lib64/”目录下。${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。以root用户安装为例,则安装后文件存储路径为:/usr/local/Ascend/cann。
编译acl接口程序时,请按照include的头文件依赖对应的库文件,如果引用多余的库文件(例如libascendcl.a),可能导致版本功能异常或后续版本升级时存在兼容性问题。
定义接口的头文件 |
用途 |
对应的库文件 |
|---|---|---|
acl/acl_base.h |
用于定义基本的数据类型(例如aclDataBuffer、aclTensorDesc等)及其操作接口、枚举值(例如aclFormat)、日志管理接口等。 |
libascendcl.so |
acl/acl_rt.h |
用于定义初始化/去初始化、Device管理、Context管理、Stream管理、同步等待、内存管理等接口。 |
libacl_rt.so 说明:为了兼容旧版本,旧版本中支持使用libascendcl.so,但后续版本这种方式会废弃,建议使用libacl_rt.so,防止后续版本出现兼容性问题。 |
acl/acl_mdl.h |
用于定义模型管理接口。 |
libacl_mdl.so 说明:为了兼容旧版本,旧版本中支持使用libascendcl.so,但后续版本这种方式会废弃,建议使用libacl_mdl.so,防止后续版本出现兼容性问题。 |
acl/acl_op.h acl/acl_op_compiler.h |
用于定义单算子调用接口(仅包含单算模型执行接口)。 |
libacl_op_executor.so libacl_op_compiler.so 说明:为了兼容旧版本,旧版本中支持使用libascendcl.so,但后续版本这种方式会废弃,建议使用libacl_op_executor.so和libacl_op_compiler.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 |
调用算子接口时依赖的公共Meta接口,如创建aclTensor、aclScalar、aclIntArray等。 |
|
aclnn/aclnn_base.h |
用于定义aclnnInit和aclnnFinalize。 |
|
aclnnop/aclnn_*.h (*表示具体的算子名称) |
用于定义Math、NN、CV、Transformer类算子aclnn接口。 |
|
acldvppop目录下: acldvpp_base.h acldvpp_op_api.h |
用于定义DVPP媒体数据处理类算子的功能接口。 |