【MindStudio训练营第一季】什么是AscendCL?

一、介绍

AscendCL全称Ascend Computing Language,简称ACL,其是一套用于在昇腾平台上开发深度学习推理应用的API库,目前有C语言和Python两个版本,实现利用昇腾硬件计算资源,在CANN平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。简单来说,AscendCL就是一个调用昇腾硬件计算资源的语言。比如我们想让NPU并行计算,我们就可以使用ACL编写并行计算的代码去实现。

ACL的逻辑架构图如下:
【MindStudio训练营第一季】什么是AscendCL?_第1张图片

二、使用

主要流程图如下:
【MindStudio训练营第一季】什么是AscendCL?_第2张图片

1、AscendCL初始化

使用AscendCL接口开发应用时,必须先初始化AscendCL,否则可能会导致后续系统内部资源初始化出错,进而导致其他异常。调用aclInit接口实现初始化AscendCL。

2、运行管理资源申请

依次申请运行管理资源:Device、Context、Stream。

3、算子调用/模型推理

调用算子进行模型装换,将模型装换成om离线模型;将模型加载到系统中;对数据进行处理,进行编码、解码、抠图、图片缩放等操作;执行模型,实现具体功能;数据后处理,处理模型推理的结果;调用卸载模型接口卸载模型。

4、运行管理资源释放

依次释放运行管理资源:Stream、Context、Device。

5、AscendCL去初始化

有初始化就有去初始化,在确定完成了AscendCL的所有调用之后,或者进程退出之前,需去初始化AscendCL。调用aclFinalize接口实现AscendCL去初始化。

tips

Device是用户指定的计算设备,即昇腾AI处理器的硬件设备,利用PCle与Host相连,提供NN计算能力。

Context可以理解为一个容器,与用户线程绑定,一个用户线程对应一个Context,其管理所有对象(如Stream)的生命周期。

Stream是Device上的执行流,用于维护一些异步操作的执行顺序,确保按照调用顺序在Device上执行。

Task是Device上真正的执行体,从属于Stream,用户编程时并不感知。

韦恩图如下:
【MindStudio训练营第一季】什么是AscendCL?_第3张图片

三、一些昇腾硬件知识

RC模式与EP模式

RC(Root Complex)模式,即AI应用、CANN和昇腾NPU合设在同一个机器中,比如Atlas 200 DK开发者套件,就是典型的RC模式。

EP(Endpoint)模式,即AI应用与CANN在同一个机器中,其通过PCle去调用远端的昇腾NPU进行计算,比如昇腾训练服务器。

你可能感兴趣的:(人工智能,深度学习)