昇腾社区首页
EN
注册

简介

本节介绍AscendCL的主要功能、基本概念,并给出本文档的学习顺序建议。

AscendCL是什么?

AscendCL(Ascend Computing Language)是一套C语言API库,提供运行时管理、单算子调用、模型管理、媒体数据处理等API,能够实现利用底层硬件计算资源,在CANN平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等。简单来说,就是统一的API框架,实现对所有资源的调用。其中,计算资源层是昇腾AI处理器的硬件算力基础,主要完成神经网络的矩阵相关计算、完成控制算子/标量/向量等通用计算和执行控制功能、完成图像和视频数据的预处理。

图1 逻辑架构图

AscendCL的应用场

  • 开发应用:用户可以直接调用AscendCL提供的接口开发图片分类应用、目标识别应用等。
  • 供第三方框架调用:用户可以通过第三方框架调用AscendCL接口,以便使用昇腾AI处理器的计算能力。
  • 供第三方开发lib库:用户还可以使用AscendCL封装实现第三方lib库,以便提供昇腾AI处理器的运行管理、资源管理等能力。

AscendCL的优势如下:

  • 高度抽象:算子编译、加载、执行的API归一,相比每个算子一个API,AscendCL大幅减少API数量,降低复杂度。
  • 向后兼容:AscendCL具备向后兼容,确保软件升级后,基于旧版本编译的程序依然可以在新版本上运行。
  • 零感知昇腾AI处理器:一套AscendCL接口可以实现应用代码统一,多款昇腾AI处理器无差异。

基本概念

表1 概念介绍

概念

描述

同步/异步

本文中提及的同步、异步是站在调用者和执行者的角度:

  • 若在调用本文中的接口后不等待Device侧的任务执行完成再返回,则表示调度是异步的。
  • 若在调用本文中的接口后需等待Device侧的任务执行完成再返回,则表示调度是同步的。

进程/线程

本文中提及的进程、线程,若无特别注明,则表示用户应用程序中的进程、线程。

通道

在RGB色彩模式下,图像通道就是指单独的红色R、绿色G、蓝色B部分。也就是说,一幅完整的图像,是由红色绿色蓝色三个通道组成的,它们共同作用产生了完整的图像。同样在HSV色系中指的是色调H,饱和度S,亮度V三个通道。

Ascend EP形态

昇腾AI处理器的PCIe的工作模式进行区分,如果PCIe工作在从模式,则称为Ascend EP形态。

Ascend EP形态下,Host侧作为主端,Device侧作为从端(即EP)。客户的AI业务程序运行在Host中,昇腾AI处理器作为Device以PCIe从设备接入Host系统,Host系统通过PCIe通道与Device系统交互,将AI任务加载到Device侧的昇腾AI处理器中运行。Device通过PCIe通道配合主设备(X86、ARM等各种服务器)进行工作,Device只为Host提供NN计算能力,且Device上的CPU资源仅能通过Host调用

Ascend RC形态

昇腾AI处理器的PCIe的工作模式进行区分,如果PCIe工作在主模式,可以扩展外设,则称为Ascend RC形态。

Ascend RC形态下,产品的CPU直接运行用户指定的AI业务软件,网络摄像头、I2C传感器、SPI显示器等其他外挂设备作为从设备接入产品。

文档使用建议

如果您是第一次使用本文档,已了解AscendCL做什么,但还不清楚如何开发应用时,建议:

  1. 先参考CANN 软件安装指南安装固件、驱动及CANN软件。
  2. 然后单击Link获取入门样例,按README.md中的指导下载样例源码、编译及运行应用等,再通过源码了解acl接口(接口名以acl开头)的关键代码逻辑。
  3. 再通过编程接口接口调用流程了解整体的接口分类以及接口调用流程。
  4. 最后通过单算子调用媒体数据处理(含图像/视频等)模型管理等章节的接口调用流程+示例代码展开学习,扩展进行其它应用的开发。

具备C/C++语言程序开发能力、对机器学习或深度学习有一定了解的开发者,可以更好地理解本文档。