【2023 · CANN训练营第一季】应用开发(初级)第四章——模型推理

news/2024/11/26 5:27:17/

AscendCL运行资源管理

image.png

申请运行管理资源时,需按顺序依次申请: Device、Context、Stream,然后根据实际需求调用aclrtGetRunMode接口获取软件栈的运行模型(当同一个应用既支持在Host运行,也支持在Device运行时,在编程时需要就需要根据运行模式来判断后续的接口调用逻辑,这时需要提前获取运行模式。)。
调用aclrtSetDevice接口显式指定用于运算的Device。调用aclrtCreateContext接口显式创建Context,调用aclrtCreateStream接口显式创建Stream。
不显式创建Context和Stream,系统会使用默认Context、默认Stream该默认Context、默认Stream是在调用aclrtSetDevice接口时隐式创建的默认Context、默认Stream作为接口入参时,直接传NULL。不显式指定用于运算的Device。
调用aclrtCreateContext接口显式创建Context,调用aclrtCreateStream接口显式创建Stream。 系统在显式创建Context时,系统内部会调用acirtSetDevice接口指定运行的Device,Device ID通过aclrtCreateContext接口传入。

接口命名规则

image.png

Device管理

image.png
image.png
image.png
image.png

Context管理

image.png
image.png
image.png

Stream管理

原理介绍

在ACL中,Stream是一个任务队列,应用程序通过Stream来管理任务的并行,一个Stream内部的任务保序执行,即Stream根据发送过来的任务依次执行;不同Stream中的任务并行执行。一个默认Context下会挂一个默认Stream,如果不显式创建Stream,可使用默认Stream。

image.png

AscendCL内存管理&数据传输

ACL是有一套自己的内存管理逻辑的,任何用于参与ACL运算的内存(Device侧)都不能是C/C++原生内存管理接口(Malloc、new) 申请的内存,而是调用ACL提供的内存管理专用接口回忆一下: ACL在设备的管理上,是要区分Host和Device的 (还记得aclrtGetRunMode接口吗? )所有的加速计算最终都是要在Device上执行的,也就是说所有的数据(数据集、模型等)最终都会在Device侧参与计算,这里分两种场景:

Host&Device分设,如Atlas300场景 (虽然在同一台机器上,但是是通过PCle接口交的,本质上是两个设备)此时数据、模型都在host侧加载,然后将这些数据传输到device侧进行计算,计算完毕后将结果回传至host侧进行使用

Host&Device合设,如Atlas200Dk场景,此时不区分Host与Device,只有Device,数据、模型都在device上直接加载、计算、使用
本模块就是要跟大家分享如何在Host侧和Device侧分别申请内存,并将数据在两端进行传输(复制)


http://www.ppmy.cn/news/85383.html

相关文章

系列1——geotools简介

geotools简介 官网 https://docs.geotools.org/latest/userguide/index.html 架构图 常用功能列表 ModulePurposegt-renderImplements of Java2D rendering engine to draw a mapgt-jdbcImplements for accessing spatial databasegt-mainImplements for accessing spatial…

C++——哈希表

哈希表(Hash table),也被称为散列表,是一种常用的数据结构,用于实现键-值对的存储和检索。它通过将键映射到数组中的索引位置来实现快速的数据查找。 在 C 中,可以使用标准库中的 unordered_map 类来实现哈…

LDO基本知识

本文引用TI文档 压降 压降电压 VDO 是指为实现正常稳压,输入电压 VIN 必须高出 所需输出电压 VOUT(nom) 的最小压差。 如果 VIN 低于此值,线性稳压器将以压降状态工作,不再调 节所需的输出电压。在这种情况下,输出电压 VOUT(drop…

传染病学模型 | Matlab实现SEIRS传染病学模型 (SEIRS Epidemic Model)

文章目录 效果一览基本描述模型介绍程序设计参考资料效果一览 基本描述 传染病学模型 | Matlab实现SEIRS传染病学模型 (SEIRS Epidemic Model) 模型介绍 SEIRS是一种基于计算机模拟的传染病学模型,用于研究人群中传染病的传播和控制。与其他传染病学模型不同,SEIRS模型考虑了…

Java集合类型对象的快速初始化

在Java中, 集合类型的对象初始化, 一般是先创建对象, 然后往集合里面增加元素,这种写法直观,但是撰写代码的时候感觉比较冗余, 是否有什么酷炫的方式简化定义初始化呢? 本篇介绍字符串数组、Lis…

python为什么长期霸占榜首

Python霸占榜首 只因它真的很强 Python,年龄可能比很多读者都要大,但是它在更新快速的编程界却一直表现出色,甚至有人把它比作是编程界的《葵花宝典》,只是Python的速成之法相较《葵花宝典》有过之而无不及。 Python简洁&#x…

python列表获取 value值

caseinfo[{name: 获取token,request: {method: get, url: /cgi-bin/token, headers: none,datas:{grant_type: client_credential,appid: wx2ed6b772cc34974d, secret: aca6a76b0a57f9d32a90a716318d6736}}, validate: none}] 举例说明,近期在学习python的时候需要获…

opencv_c++学习(十八)

一、连通域分析 连通域分割原理: 邻域分为4邻域和8邻域。如上图所示。当使用连通域分割方法时,需要首先将图像进行二值化处理,在进行连通域的处理。右图为连通域分割两遍法的一个示意图,具体原理可以自行查询,这里只…