【2024第一期CANN训练营】2、AscendCL概述

文章目录

  • 【2024第一期CANN训练营】2、AscendCL概述
    • 1. AscendCL架构及基本概念
      • 1.1 什么是AscendCL?
      • 1.2 AscendCL的优势
      • 1.3 AscendCL应用场景
      • 1.4 基本概念
    • 2. AscendCL接口调用流程
      • 2.1 流程概述
      • 2.2 详细步骤
      • 2.3 头文件和库文件
    • 3. 准备开发和运行环境
      • 3.1 部署环境
      • 3.2 设置环境变量(可选)

【2024第一期CANN训练营】2、AscendCL概述

本教程将从AscendCL的基本概念入手,逐步介绍接口调用流程,以及如何准备开发和运行环境。

1. AscendCL架构及基本概念

1.1 什么是AscendCL?

**AscendCL是一套用于在昇腾平台上开发深度神经网络应用的C语言API库。**它提供运行资源管理、内存管理、模型加载与执行、算子加载与执行、媒体数据处理等API,实现利用昇腾硬件计算资源进行深度学习推理计算、图形图像预处理、单算子加速计算等能力。

img

1.2 AscendCL的优势

  • 高度抽象:简化API数量,降低复杂度。
  • 向后兼容:确保软件升级后,旧版本程序依然可运行。
  • 零感知芯片:一套接口实现应用代码统一,多款昇腾AI处理器无差异。

1.3 AscendCL应用场景

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

1.4 基本概念

  • 同步/异步:根据调用AscendCL接口后是否等待Device侧任务执行完成来区分。

  • 进程/线程:指Host上的进程、线程。

  • Host:与Device相连接的服务器,利用Device提供的计算能力。

  • Device:安装了昇腾AI处理器的硬件设备,通过PCIe接口与Host连接。

  • Context:管理所有对象(包括Stream、Event等)的生命周期的容器。

  • Stream:维护异步操作的执行顺序,确保按照应用程序中的代码调用顺序在Device上执行。

  • Event:支持调用AscendCL接口同步Stream之间的任务。

  • AIPP:用于在AI Core上完成图像预处理。

  • 动态Batch/动态分辨率:支持模型每次输入的batch size或分辨率不固定的场景。

  • 动态维度(ND格式):支持Transformer等网络在输入格式的维度不确定的场景。

  • 通道(Channel):在RGB色彩模式下,图像通道指的是单独的红色(R)、绿色(G)、蓝色(B)部分。一幅完整的图像由这三个通道组成,它们共同作用产生了完整的图像。在HSV色系中,通道则指的是色调(Hue)、饱和度(Saturation)、亮度(Value)三个通道。

  • 标准形态:指Device作为Endpoint(EP),通过PCIe接口与主设备(如X86、ARM等各种服务器)配合工作的情况。在这种形态下,Device上的CPU资源仅能通过Host调用,相关推理应用程序运行在Host上。Device只为服务器提供神经网络(NN)计算能力。

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

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

2. AscendCL接口调用流程

2.1 流程概述

使用AscendCL接口开发AI应用的整体接口调用流程包括初始化AscendCL、申请运行管理资源、执行模型推理/单算子调用/媒体数据处理、释放运行管理资源和去初始化AscendCL。

img

2.2 详细步骤

  1. AscendCL初始化:调用aclInit接口实现初始化。
  2. 运行管理资源申请:依次申请Device、Context、Stream。
  3. 模型推理/单算子调用/媒体数据处理
    • 模型推理:加载模型、执行模型、数据后处理、模型卸载。
    • 算子调用:直接加载并执行单个算子。
  4. 运行管理资源释放:依次释放Stream、Context、Device。
  5. AscendCL去初始化:调用aclFinalize接口实现去初始化。

2.3 头文件和库文件

  • AscendCL头文件在$HOME/Ascend/ascend-toolkit/latest/include/目录下,

  • AscendCL库文件在$HOME/Ascend/ascend-toolkit/latest/lib64/目录下。

  • AscendCL中各头文件用途说明链接

3. 准备开发和运行环境

3.1 部署环境

根据《CANN软件安装指南》部署开发环境和运行环境。开发环境用于获取调用接口所需的头文件和库文件,运行环境用于执行编译生成的应用可执行文件。

3.2 设置环境变量(可选)

  • ASCEND_RT_VISIBLE_DEVICES:设置应用进程可用的Device ID。
  • ASCEND_CACHE_PATHASCEND_WORK_PATH:设置AscendCL应用编译运行过程中产生的文件的落盘路径
  • 通过export命令设置的环境变量只在当前终端窗口生效,写入~/.bashrc文件可使环境变量永久生效。
export ASCEND_RT_VISIBLE_DEVICES=0
export ASCEND_CACHE_PATH=/repo/task001/cache
export ASCEND_WORK_PATH=/repo/task001/172.16.1.12_01_03

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文档解析应该获取哪些知识?

一、背景 随着人工智能和机器学习技术的发展,我们现在有能力从这些文档中提取更加丰富和深入的信息。无论是为了内容管理、知识发现还是数据分析,这些技术都为我们提供了强大的工具,以更有效地利用PDF文档中的知识。随着技术的不断进步&…

便携式气象站的工作原理

TH-BQX9便携式自动气象观测仪器是一种集成了多种传感器和自动化技术的气象监测设备,以其便携性、自动化和高精度等特点,广泛应用于气象、环保、农业、科研等领域。 首先,它的便携性是其最大的优势之一。设计紧凑、轻便易携,使得用…

Thinkphp+workman+redis实现多线程异步任务处理

前言 PHP本身并不直接支持多线程编程,因为PHP的设计初衷是作为一个脚本语言,主要面向的是Web开发。不过我们可以使用一些扩展和库来实现多线程的功能,比如workerman和swoole。通过多线程异步执行任务,可以大大提高代码的执行效率。…

【送书福利!第一期】《ARM汇编与逆向工程》

🐮博主syst1m 带你 acquire knowledge! ✨博客首页——syst1m的博客💘 😘《CTF专栏》超级详细的解析,宝宝级教学让你从蹒跚学步到健步如飞🙈 😎《大数据专栏》大数据从0到秃头👽&…

202212 CSP认证 | JPEG 解码

JPEG 解码 一道特别幸福简单的第三题…都不敢想象在考场上碰见这种题目会有多幸福。直接按照题目意思做就好了,感觉比第二题还简单…而且数组特别小完全没有超时压力 补充一个对小数处理的部分,包括本题涉及的四舍五入取整以及输出取整:C 实…

<sa8650>sa8650 partition-之-独立新增分区不加img

<sa8650>sa8650 partition-之-独立新增分区不加img 一、 前言二、准备条件三、添加新分区四、分区信息解析4.1 新增分区信息字段解析4.2 guid生成工具五、生成新的刷机文件六、替换刷机文件七、刷机验证八、总结九、参考文献<sa8650>sa8650 partition-之-非基线编译下新增分…

小迪安全42WEB攻防-通用漏洞文件包含LFIRFI伪协议

#知识点: 1、解释什么是文件包含 2、分类-本地LFI&远程RFI 3、利用-配合上传&日志&会话 4、利用-伪协议&编码&算法等 #核心知识: 1、本地包含LFI&远程包含RF1-区别 一个只能包含本地,一个可以远程加载 具体形成原因由代码和环境配置文件决定…

2024智慧农场系统微信小程序前端如何上传以及配置

2024智慧农场系统微信小程序前端如何上传以及配置 首先下载微信开发者工具 下载好以后打开,然后导入项目 前端修改:siteinfo.js 里面的域名信息 改完之后开始在微信开发者工具中开发工具中编译、上传、发布即可

【how2j练习题】HTML部分综合练习

练习题 1 <html><h1>英雄联盟 &#xff08;电子竞技类游戏&#xff09;</h1> <p> <strong>《英雄联盟》</strong>&#xff08;简称lol&#xff09;是由美国<i>Riot Games</i>开发&#xff0c;中国大陆地区由腾讯游戏运营的网络…

系统学习Python——装饰器:“私有“和“公有“属性案例-[在不同Python版本下的使用]

分类目录&#xff1a;《系统学习Python》总目录 对于通过名称显式调用的方法&#xff0c;文章《系统学习Python——装饰器&#xff1a;“私有“和“公有“属性案例-[使用伪私有、破坏私有和装饰器权衡]》中的示例在Python2.X和Python3.X下都能如期工作。然而和大多数软件一样&a…

软考78-上午题-【面向对象技术3-设计模式】-结构型设计模式01

一、适配器模式 1-1、意图 个类的接口转换成客户希望的另外一个接口。 Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 1-2、结构 适配器模式分为&#xff1a; 1、适配器类模式&#xff1b; 2、适配器对象模式 类适配器使用多重继承对一个接口与另…

时间序列中的离群值检测

时间序列中的离群值检测学习资料&#xff1a; Chapter 5 Outlier detection in Time series Anomaly Detection Techniques in Python A review on outlier/anomaly detection in time series data

goland设置保存文件时不将4个空格转为TAB

goland设置保存文件时不将4个空格转为TAB 版本&#xff1a;GoLand 2022.3 设置路径&#xff1a; Settings -> Editor -> Code Style -> Go -> Run gofmt图示&#xff1a;

理解数字证书,守护你的大数据世界

随着大数据时代的来临&#xff0c;信息的安全性和可靠性成为了公众和企业关注的焦点。在这样的背景下&#xff0c;数字证书作为一种保障信息安全的重要工具&#xff0c;其重要性日益凸显。本文将从数字证书的基本概念、工作原理及其在大数据时代的应用等方面&#xff0c;为大家…

数据库管理-第161期 数据库,走着瞧(20240318)

数据库管理161期 2024-03-18 数据库管理-第161期 数据库&#xff0c;走着瞧&#xff08;20240318&#xff09;MySQLSACC走着瞧RACAIOps 总结 数据库管理-第161期 数据库&#xff0c;走着瞧&#xff08;20240318&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&am…

面试算法-35-长度最小的子数组

题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 。 示例 1&#xff1a; 输入…

HTML + CSS 核心知识点- 定位

简述&#xff1a; 补充固定定位也会脱离文档流、不会占据原先位置 1、什么是文档流 文档流是指HTML文档中元素排列的规律和顺序。在网页中&#xff0c;元素按照其在HTML文档中出现的顺序依次排列&#xff0c;这种排列方式被称为文档流。文档流决定了元素在页面上的位置和互相之…

QT进阶-----------认识QT相关的模块(第四天)

1、关于Visual Studio与QT Creator的不同导入方式 Visual Studio作为windows宇宙最强编辑器以及编译器&#xff0c;它相当的好用&#xff0c;作为一个学了一年QT的菜鸟&#xff0c;总结了一些关于VS以及QT Creator两者的不同。 首先&#xff0c;在VS中qt是作为第三方库导入到…

怎么做好独立站的SEO优化

随着全球贸易的蓬勃发展&#xff0c;越来越多的企业开始关注外贸市场&#xff0c;并将目光投向了外贸网站。然而&#xff0c;在竞争激烈的外贸市场中&#xff0c;如何写出吸引人的文章&#xff0c;以及如何优化网站以在搜索引擎中脱颖而出&#xff0c;成为了外贸独立网站必须面…

Python 求素数个数

要计算一个给定范围内素数的个数&#xff0c;你可以编写一个Python函数来遍历这个范围&#xff0c;并对每个数检查它是否是素数。下面是一个简单的例子&#xff0c;该函数计算从2到n&#xff08;包括n&#xff09;之间的素数个数&#xff1a; python复制代码 def count_primes…