一文带你认识AscendCL
摘要: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的更多相关文章
- Istio是啥?一文带你彻底了解!
原标题:Istio是啥?一文带你彻底了解! " 如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 Istio,并且知道它和 Service Mesh 有着牵扯. 这篇文章可以作为了解 ...
- 一文带您了解5G的价值与应用
一文带您了解5G的价值与应用 5G最有趣的一点是:大多数产品都是先有明确应用场景而后千呼万唤始出来.而5G则不同,即将到来的5G不仅再一次印证了科学技术是第一生产力还给不少用户带来了迷茫——我们为什么 ...
- 一文带你了解elasticsearch
一文带你了解elasticsearch cxf2102100人评论160人阅读2019-07-02 21:31:36 elasticsearch es基本概念 es术语介绍 文档Document ...
- 【转帖】Istio是啥?一文带你彻底了解!
Istio是啥?一文带你彻底了解! http://www.sohu.com/a/270131876_463994 原始位置来源: https://cizixs.com 如果你比较关注新兴技术的话,那么 ...
- 一文带你了解 C# DLR 的世界
一文带你了解 C# DLR 的世界 在很久之前,我写了一片文章dynamic结合匿名类型 匿名对象传参,里面我以为DLR内部是用反射实现的.因为那时候是心中想当然的认为只有反射能够在运行时解析对象的成 ...
- 一文带你看清HTTP所有概念(转)
一文带你看清HTTP所有概念 上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性.我们接着上篇文章没有说完的 HTTP 标头继 ...
- 一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝)
背景 在日常开发中,偶尔会遇到需要复制对象的情况,需要进行对象的复制. 由于现在流行标题党,所以,一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝) 理解 首先就需要理解 js 中的数据类型 ...
- 【项目实践】一文带你搞定Spring Security + JWT
以项目驱动学习,以实践检验真知 前言 关于认证和授权,R之前已经写了两篇文章: [项目实践]在用安全框架前,我想先让你手撸一个登陆认证 [项目实践]一文带你搞定页面权限.按钮权限以及数据权限 在这两篇 ...
- 一文带你看遍 JDK9~14 的重要新特性!
Java9 发布于 2017 年 9 月 21 日 .作为 Java8 之后 3 年半才发布的新版本,Java 9 带 来了很多重大的变化其中最重要的改动是 Java 平台模块系统的引入,其他还有诸如 ...
- 让自己写的电子笔记连文带图全平台兼容(MarkDown图片显示兼容)
目录 一.工具使用 语言使用:MarkDown 简介 使用原因 使用方法 软件使用:Typora 简介 环境设置搭建 1)搭建图床 2)配置PicGo 3)配置typora 4)测试 图片上传测试 平 ...
随机推荐
- 使用 Ant Design Vue 你可能会遇到的14个问题
公司有一个新需求,在原来项目基础上开发,项目中使用 Ant Design Vue,版本是 1.X ,在此记录下遇到的问题:对于没有使用过或者使用程度不深的同学来说,希望可以帮助你在开发中遇到问题时有个 ...
- MySQL 高级(进阶) SQL 语句——其二
MySQL 高级(进阶) SQL 语句 视图 ---- CREATE VIEW ----视图,可以被当作是虚拟表或存储查询. 视图跟表格的不同是,表格中有实际储存数据记录,而视图是建立在表格之上的一个 ...
- 用结构化思维解一切BUG(2):实践原则
背景 本文是系列文章<用结构化思维解一切BUG>的第二篇.本系列文章主要介绍一种「无需掌握技术细节,只需结构化思维和常识即可解一切BUG的方法」. 在前序文章<用结构化思维解一切BU ...
- L3-011 直捣黄龙
#include<bits/stdc++.h> using namespace std; using pii = pair<int, int>; const int N = 3 ...
- python之递归(斐波那契数列)与迭代
对于较大的计算来说,迭代不如递归计算速度快,并且可以说非常慢 但是迭代对于较小的运算又比递归巧妙 # 迭代方法 def slowsnail(x): am = [1, 1] if x < 0: p ...
- UNI-APP之微信小程序转H5
开始 最近有个需求,需要将微信小程序中一些页面和功能改成h5,这次功能开发的时间有点紧,而且重新写一套有点来不及.考虑到微信小程序与uni-app有着一些共通之处,所以打算直接转成uni-app.un ...
- 超实用:通过文字就可以操纵这款AI表格
公众号「架构成长指南」,专注于生产实践.云原生.分布式系统.大数据技术分享. 工具介绍 今天给大家分享超实用的AI表格ChatExcel,这个工具是由北大团队在2022年3月开始开发的AI表格处理神器 ...
- 品牌全渠道营销系统如何与不同经销商ERP打通
品牌商在与各经销商ERP系统打通方面面临的挑战.传统的ERP系统往往使得数据收集和合作变得繁琐且低效,导致市场响应迟缓,影响整体的供应链管理和市场决策.我们的解决方案旨在破解这一难题,提供一个全渠道营 ...
- 2023-12-02:用go语言,如何求模立方根? x^3=a mod p, p是大于等于3的大质数, a是1到p-1范围的整数常数, x也是1到p-1范围的整数,求x。 p过大,x不能从1到p-1遍
2023-12-02:用go语言,如何求模立方根? x^3=a mod p, p是大于等于3的大质数, a是1到p-1范围的整数常数, x也是1到p-1范围的整数,求x. p过大,x不能从1到p-1遍 ...
- Go:条件控制语句
在 Go 语言中,主要的条件控制语句有 if-else.switch 和 select.以下是对它们的简单介绍: 1. if 语句: if 语句用于根据条件执行不同的代码块.它的基本形式如下: if ...