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

news2024/10/7 14:33:17

文章目录

  • 【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.coloradmin.cn/o/1524731.html

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

相关文章

基于springboot+vue的乡政府管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

智慧城市新篇章:数字孪生的力量与未来

随着信息技术的迅猛发展和数字化浪潮的推进,智慧城市作为现代城市发展的新模式,正在逐步改变我们的生活方式和社会结构。在智慧城市的构建中,数字孪生技术以其独特的优势,为城市的规划、管理、服务等方面带来了革命性的变革。本文…

企业计算机服务器中了devicdata勒索病毒怎么办,devicdata勒索病毒解密工具流程

随着科学技术的不断发展与应用,越来越多的企业开始利用网络开展各项工作业务,网络为企业的生产运营提供了极大便利,大大提高了生产运营效率,同时也为企业的发展规划带来不错的契机。但网络是一把双刃剑,网络在为人们提…

算法:一些DFS的经验

DFS:可以看作是向下遍历树的模拟 剪枝:减少时间复杂度 一个dfs所需要具备的元素: 一,出口 1.出口:每一个进入的dfs的出口,可以是枚举全部元素后退出该dfs,也可以是大于层数或剪枝条件........ 二,向下搜…

解决 Nginx 1.24 版本下载视频慢和文件问题的方法

解决 Nginx 1.24 版本下载视频慢和文件问题的方法 如果你最近在腾讯云服务器上遇到了下载视频慢以及视频文件无法正常使用的问题,可能需要检查一下你的 Nginx 版本。下面是一个真实案例的分析和解决方案,希望能帮助你避免或解决类似问题。 背景 一个运…

Vue3 - 笔记

1.创建Vue3项目 1.1vue-cli 使用vue-cli创建Vue3项目,需要确保vue-cli版本在4.5.0以上 ## 查看vue/cli版本,确保vue/cli版本在4.5.0以上 vue --version vue -V## 安装或者升级vue/cli npm install -g vue/cli使用vue-cli创建Vue3项目 vue create vue3…

Input/Output模型

I/O在计算机里指的是INPUT/OUTPUT,也就是输入/输出。IOPS即每秒钟的输入输出量。I/O的工作机制就是把数据从内核空间中的内存数据复制到用户空间中进程的内存当中。 Linux的I/O 磁盘I/O 磁盘I/O是进程向内核发起系统调用,请求磁盘上的某个资源&#xff…

论文阅读_时序模型_iTransformer

1 2 3 4 5 6 7 8英文名称: ITRANSFORMER: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING 中文名称: ITRANSFORMER:倒置Transformers在时间序列预测中的有效性 链接: https://openreview.net/forum?idX6ZmOsTYVs 代码: https://github.com/thum…

深度学习 精选笔记(13.2)深度卷积神经网络-AlexNet模型

学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…

7.搜索——1.广度优先搜索BFS(求最优解)

广度优先遍历实现思路 构建辅助队列实现先进先出构建访问集,给已经访问的结点进行标记将起始结点加入队列当队列非空时: 取出队首元素将队首元素的所有邻居入队访问队首元素 队列空即访问完毕 用途:求最优解 例题——catch that cow 代码 …

【LabVIEW FPGA入门】流水线

LabVIEW中流水线 在当今多核处理器和多线程应用程序的世界中,程序员在开发应用程序时需要不断思考如何最好地利用尖端 CPU 的强大功能。尽管用传统的基于文本的语言构建并行代码可能难以编程和可视化,但 NI LabVIEW 等图形开发环境越来越多地允许工程师和…

小狐狸ChatGPT智能聊天系统源码v2.7.6全开源Vue前后端+后端PHP

测试环境包括Linux系统的CentOS 7.6,宝塔面板,PHP 7.4和MySQL 5.6。网站的根目录是public, 使用thinkPHP进行伪静态处理,并已开启SSL证书。 该系统具有多种功能,包括文章改写、广告营销文案创作、编程助手、办公达人…

健身·健康行业Web3新尝试:MATCHI

随着区块链技术进入主流,web3 运动已经开始彻底改变互联网,改写从游戏到金融再到艺术的行业规则。现在,MATCHI的使命是颠覆健身行业。 MATCHI是全球首个基于Web3的在线舞蹈健身游戏和全球首个Web3舞蹈游戏的发起者,注册于新加坡&a…

6_20240304开窗

目录 课堂 SQL执行顺序: 开窗函数 累加order by 开窗格式: 排名 三种排名: 偏移 上偏移 下偏移 同环比 加子查询的几种方式 1 放在 select 后面 2 放在 from 后面 当表 ​3 放在where 后 4 放在HAVING 后面 作业 1.Ord…

Unity在UGUI上通过绘制网格顶点自由画线

该插件的实现是使用UI组件的绘图API来动态生成和修改几何形状,可自由动态更改画线的粗细、拐角圆滑度、颜色,自由增减节点,不额外增加gameobject,并且在原生的UGUI上以ScreenSpace-Overlay的状态下,显示效果如下所示 …

rust引用本地crate

我们可以动态引用crate,build时从crate.io下载,但可能因无法下载导致build失败。首次正常引用三方crate,build时自动下载的crate源码,我们将其拷贝到固定目录中; build后可在RustRover中按住Ctrl键,在crat…

Python的网络爬虫介绍与实战

Python的网络爬虫基础介绍与实战 定义流程包和函数静动态网页爬虫实战红牛分公司?二手房数据(静态网页)豆瓣读书(动态网页) 定义 网络爬虫是按照一定的规则,自动地抓取万维网(www)信…

【Kubernetes】k8s删除master节点后重新加入集群

目录 前言一、思路二、实战1.安装etcdctl指令2.重置旧节点的k8s3.旧节点的的 etcd 从 etcd 集群删除4.在 master03 上,创建存放证书目录5.把其他控制节点的证书拷贝到 master01 上6.把 master03 加入到集群7.验证 master03 是否加入到 k8s 集群,检查业务…

用尾插的思想实现移除链表中的元素

目录 一、介绍尾插 1.链表为空 2.链表不为空 二、题目介绍 三、思路 四、代码 五、代码解析 1. 2. 3. 4. 5. 6. 六、注意点 1. 2. 一、介绍尾插 整体思路为 1.链表为空 void SLPushBack(SLTNode** pphead, SLTDataType x) {SLTNode* newnode BuyLTNode(x); …

[大模型]ollama本地部署自然语言大模型

文章目录 ollama下载地址githup百度云 模型默认安装位置模型修改默认安装位置可下载模型相关命令 Chatbox客户端下载地址githup百度云 设置ollama模型并运行 大模型已经发布很久,网络上的大模型形形色色,现在已然是群英荟萃,那么,…