文章目录
- 【2024第一期CANN训练营】2、AscendCL概述
- 1. AscendCL架构及基本概念
- 1.1 什么是AscendCL?
- 1.2 AscendCL的优势
- 1.3 AscendCL应用场景
- 1.4 基本概念
- 2. AscendCL接口调用流程
- 2.1 流程概述
- 2.2 详细步骤
- 2.3 头文件和库文件
- 3. 准备开发和运行环境
- 3.1 部署环境
- 3.2 设置环境变量(可选)
【2024第一期CANN训练营】2、AscendCL概述
本教程将从AscendCL的基本概念入手,逐步介绍接口调用流程,以及如何准备开发和运行环境。
1. AscendCL架构及基本概念
1.1 什么是AscendCL?
**AscendCL是一套用于在昇腾平台上开发深度神经网络应用的C语言API库。**它提供运行资源管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等API,实现利用昇腾硬件计算资源进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。
1.2 AscendCL的优势
- 高度抽象:简化API数量,降低复杂度。
- 向后兼容:确保软件升级后,旧版本程序依然可运行。
- 零感知芯片:一套接口实现应用代码统一,多款昇腾AI处理器无差异。
1.3 AscendCL应用场景
- 开发应用:用户可调用AscendCL接口开发图片分类、目标识别等应用。
- 第三方框架调用:用户通过第三方框架使用AscendCL接口,利用昇腾AI处理器计算能力。
- 开发lib库:用户使用AscendCL封装第三方lib库,提供昇腾AI处理器运行管理、资源管理功能。
1.4 基本概念
-
同步/异步:根据调用AscendCL接口后是否等待Device侧任务执行完成来区分。
-
进程/线程:指Host上的进程、线程。
-
Host:与Device相连接的服务器,利用Device提供的计算能力。
-
Device:安装了昇腾AI处理器的硬件设备,通过PCIe接口与Host连接。
-
Context:管理所有对象(包括Stream、Event等)的生命周期的容器。
-
Stream:维护异步操作的执行顺序,确保按照应用程序中的代码调用顺序在Device上执行。
-
Event:支持调用AscendCL接口同步Stream之间的任务。
-
AIPP:用于在AI Core上完成图像预处理。
-
动态Batch/动态分辨率:支持模型每次输入的batch size或分辨率不固定的场景。
-
动态维度(ND格式):支持Transformer等网络在输入格式的维度不确定的场景。
-
通道(Channel):在RGB色彩模式下,图像通道指的是单独的红色(R)、绿色(G)、蓝色(B)部分。一幅完整的图像由这三个通道组成,它们共同作用产生了完整的图像。在HSV色系中,通道则指的是色调(Hue)、饱和度(Saturation)、亮度(Value)三个通道。
-
标准形态:指Device作为Endpoint(EP),通过PCIe接口与主设备(如X86、ARM等各种服务器)配合工作的情况。在这种形态下,Device上的CPU资源仅能通过Host调用,相关推理应用程序运行在Host上。Device只为服务器提供神经网络(NN)计算能力。
-
EP模式:以昇腾AI处理器的PCIe的工作模式进行区分,如果PCIe工作在从模式,则称为EP模式。
-
RC模式:以昇腾AI处理器的PCIe的工作模式进行区分,如果PCIe工作在主模式,可以扩展外设,则称为RC模式。
2. AscendCL接口调用流程
2.1 流程概述
使用AscendCL接口开发AI应用的整体接口调用流程包括初始化AscendCL、申请运行管理资源、执行模型推理/单算子调用/媒体数据处理、释放运行管理资源和去初始化AscendCL。
2.2 详细步骤
- AscendCL初始化:调用
aclInit
接口实现初始化。 - 运行管理资源申请:依次申请Device、Context、Stream。
- 模型推理/单算子调用/媒体数据处理:
- 模型推理:加载模型、执行模型、数据后处理、模型卸载。
- 算子调用:直接加载并执行单个算子。
- 运行管理资源释放:依次释放Stream、Context、Device。
- AscendCL去初始化:调用
aclFinalize
接口实现去初始化。
2.3 头文件和库文件
-
AscendCL头文件在
$HOME/Ascend/ascend-toolkit/latest/include/
目录下, -
AscendCL库文件在
$HOME/Ascend/ascend-toolkit/latest/lib64/
目录下。 -
AscendCL中各头文件用途说明链接
3. 准备开发和运行环境
3.1 部署环境
根据《CANN软件安装指南》部署开发环境和运行环境。开发环境用于获取调用接口所需的头文件和库文件,运行环境用于执行编译生成的应用可执行文件。
3.2 设置环境变量(可选)
- ASCEND_RT_VISIBLE_DEVICES:设置应用进程可用的Device ID。
- ASCEND_CACHE_PATH和ASCEND_WORK_PATH:设置AscendCL应用编译运行过程中产生的文件的落盘路径
- 通过
export
命令设置的环境变量只在当前终端窗口生效,写入~/.bashrc
文件可使环境变量永久生效。
export ASCEND_RT_VISIBLE_DEVICES=0
export ASCEND_CACHE_PATH=/repo/task001/cache
export ASCEND_WORK_PATH=/repo/task001/172.16.1.12_01_03