摘要:AscendCL(Ascend Computing Language,昇腾计算语言)是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装。

本文分享自华为云社区《【CANN文档速递09期】应用开发之推理场景》,作者:昇腾CANN。

01 认识AscendCL

AscendCL(Ascend Computing Language,昇腾计算语言)是昇腾计算开放编程框架,是对底层昇腾计算服务接口的封装,它提供运行时资源(例如设备、内存等)管理、模型加载与执行、算子加载与执行、图片数据编解码/裁剪/缩放处理等API库,实现在昇腾CANN平台上进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。简单来说,就是统一的API框架,实现对所有资源的调用。

AscendCL的优势如下:

1. 高度抽象:算子编译、加载、执行的API归一,相比每个算子一个API,AscendCL大幅减少API数量,降低复杂度。

2. 向后兼容:AscendCL具备向后兼容,确保软件升级后,基于旧版本编译的程序依然可以在新版本上运行。

3. 零感知芯片:一套AscendCL接口可以实现应用代码统一,多款昇腾处理器无差异。

AscendCL的主要应用场景如下:

1. 开发应用:用户可以直接调用AscendCL提供的接口开发图片分类应用、目标识别应用等。

2. 供第三方框架调用:用户可以通过第三方框架调用AscendCL接口,以便使用昇腾AI处理器的计算能力。

3. 供第三方开发lib库:用户还可以使用AscendCL封装实现第三方lib库,以便提供昇腾AI处理器的运行管理、资源管理等能力。

02 开发流程

此处以开发应用为例,先总览整个开发流程:

构建模型在往期文档速递中有介绍,拖动到文末查阅。

这一期的内容我们侧重介绍开发应用的流程以及编译调试应用。后期我们还会展开介绍模型推理场景下的应用开发、以及应用的精度调优。

03 AscendCL接口调用流程

此处以开发应用为例,说明基于AscendCL的接口调用流程。

1.AscendCL初始化

初始化AscendCL内部资源,为运行应用做准备。

2.运行管理资源申请

申请运行时相关资源,例如计算设备。

3.媒体数据处理

如果模型对输入图片的宽高要求与用户提供的源图不一致,AscendCL提供了媒体数据处理的接口,可实现抠图、缩放、视频或图片的编解码等,将源图裁剪成符合模型的要求。

4.模型推理或执行算子

支持整网推理和单个算子的运算。模型推理、执行算子涉及的接口调用流程不同:

● 关于模型推理

需要实现模型推理的功能,则需要先加载模型,然后执行模型,模型推理结束后,则需要卸载模型。

模型推理结束后,如果需要获取并进一步处理推理结果数据,则由用户自行编码实现。例如,在图片分类推理场景下,则需要用户编码从推理结果中查找最大置信度的类别标识对图片分类。

● 关于执行算子

需要实现执行单个算子的功能,同样也需要加载模型,然后执行算子即可,无需卸载模型。此处虽然也是加载模型,但加载接口与模型推理时的加载接口不同,且此处的模型只支持使用ATC工具转换生成。

5.运行管理资源释放

资源使用完成后需及时释放。

6.AscendCL去初始化

与初始化配对使用。

04 编译运行应用

此处我们以一个“基于Caffe ResNet-50网络实现图片分类”的应用为例,来说明编译运行应用的基本步骤以及运行应用后如何查看图片所属分类。编译运行应用依赖CANN软件,因此您需要先根据对应版本的安装指南安装CANN软件。

接下来我们就可以通过下面这个小视频3分钟体验下编译运行。

视频链接:https://v.qq.com/x/page/w3271yntt45.html

体验完了,是不是意犹未尽,想自己操作一把呢,来吧!您可以从昇腾CANN样例仓( https://gitee.com/ascend/samples/ )获取该样例以及详细的使用说明。

05文档获取

了解更详细的内容,登录昇腾社区,在开发者文档中心(https://www.hiascend.com/document?tag=community-developer)阅读相关文档:

点击关注,第一时间了解华为云新鲜技术~

一文带你认识AscendCL的更多相关文章

  1. Istio是啥?一文带你彻底了解!

    原标题:Istio是啥?一文带你彻底了解! " 如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 Istio,并且知道它和 Service Mesh 有着牵扯. 这篇文章可以作为了解 ...

  2. 一文带您了解5G的价值与应用

    一文带您了解5G的价值与应用 5G最有趣的一点是:大多数产品都是先有明确应用场景而后千呼万唤始出来.而5G则不同,即将到来的5G不仅再一次印证了科学技术是第一生产力还给不少用户带来了迷茫——我们为什么 ...

  3. 一文带你了解elasticsearch

    一文带你了解elasticsearch cxf2102100人评论160人阅读2019-07-02 21:31:36   elasticsearch es基本概念 es术语介绍 文档Document ...

  4. 【转帖】Istio是啥?一文带你彻底了解!

    Istio是啥?一文带你彻底了解! http://www.sohu.com/a/270131876_463994 原始位置来源: https://cizixs.com 如果你比较关注新兴技术的话,那么 ...

  5. 一文带你了解 C# DLR 的世界

    一文带你了解 C# DLR 的世界 在很久之前,我写了一片文章dynamic结合匿名类型 匿名对象传参,里面我以为DLR内部是用反射实现的.因为那时候是心中想当然的认为只有反射能够在运行时解析对象的成 ...

  6. 一文带你看清HTTP所有概念(转)

    一文带你看清HTTP所有概念   上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性.我们接着上篇文章没有说完的 HTTP 标头继 ...

  7. 一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝)

    背景 在日常开发中,偶尔会遇到需要复制对象的情况,需要进行对象的复制. 由于现在流行标题党,所以,一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝) 理解 首先就需要理解 js 中的数据类型 ...

  8. 【项目实践】一文带你搞定Spring Security + JWT

    以项目驱动学习,以实践检验真知 前言 关于认证和授权,R之前已经写了两篇文章: [项目实践]在用安全框架前,我想先让你手撸一个登陆认证 [项目实践]一文带你搞定页面权限.按钮权限以及数据权限 在这两篇 ...

  9. 一文带你看遍 JDK9~14 的重要新特性!

    Java9 发布于 2017 年 9 月 21 日 .作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化其中最重要的改动是 Java 平台模块系统的引入,其他还有诸如 ...

  10. 让自己写的电子笔记连文带图全平台兼容(MarkDown图片显示兼容)

    目录 一.工具使用 语言使用:MarkDown 简介 使用原因 使用方法 软件使用:Typora 简介 环境设置搭建 1)搭建图床 2)配置PicGo 3)配置typora 4)测试 图片上传测试 平 ...

随机推荐

  1. Unity anchoredPosition转localPosition

    参考 https://zhuanlan.zhihu.com/p/119442308 在已经有结果的情况下,先捋一下unity对相关字段的注释就能得出很多公式 (rectMinPos表示左下角在父节点坐 ...

  2. 一篇文章带你掌握测试基础语言——Python

    一篇文章带你掌握测试基础语言--Python 本篇文章针对将Python作为第二语言的用户观看(已有Java或C基础的用户) 因为之前学习过Java语言,所以本篇文章主要针对Python的特征和一些基 ...

  3. Android 线性布局和相对布局

    LinearLayout 线性布局 orientation 排列方式:vertical 竖直 horizontal 水平(默认值) layout_weight 权重:将子视图以对应的权重分配其空间大小 ...

  4. excel柱状图自定x轴y轴

    在Excel中,柱状图是一种常用的数据可视化方式,可以直观地展示不同数据之间的比较关系.默认情况下,Excel会根据数据自动生成X轴和Y轴的刻度和标签.然而,如果你想要自定义X轴和Y轴,在柱状图中显示 ...

  5. Go笔记(4)-流程控制

    5.Go语言流程控制 程序流程的控制结构一般有三种,顺序结构,选择结构,循环结构 (1)选择结构 if语句 if流程控制与其他语言的if流程控制基本相同 package main import &qu ...

  6. C# 对象与JSON字符串互相转换

    一.JSON字符串转对象(反序列化) 1.使用Newtonsoft.Json 反序列化字符串转换为指定类型 (T) JsonConvert.DeserializeObject<T>(jso ...

  7. C++学习笔记一:windows系统配置C++开发环境(VS code+g++/clang++)

    1.下载vscode 官网下载地址: https://code.visualstudio.com/ 安装时选择把软件加入到环境变量中这个选项 2.打开vscode,安装c/c++扩展插件 3.下载gc ...

  8. Cocos内存管理解析 CCRef/retain/release/autorelease

    Cocos内存管理源码(autorelease解析) 背景 这段时间在做项目的时候,需求需要往spine动作的挂点上绑定按钮节点,由于按钮在编辑器中是加在已有节点上的,所以在往spine上添加挂点时, ...

  9. 精致的Javascript代码

    1. 统计一个数组中,每个值的个数 var cards = [1, 2, 3, 4, 3, 2, 1, 4, 5] var dict = {}; for(var i = 0; i < cards ...

  10. Net 高级调试之十四:线程同步的基础知识和常见的同步原语

    一.介绍 今天是<Net 高级调试>的第十四篇文章,这篇文章我们主要介绍和线程相关的内容,当然不是教你如何去写多线程,更不会介绍多线程的使用方法和API,今天,我们主要讲一下锁,一说到多线 ...