一文带你认识 AscendCL
本文分享自华为云社区《【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)阅读相关文档:
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/eadcc8fbfb6050d5775d1680d】。文章转载请联系作者。
评论