首页 > 其他分享 >【2023 · CANN训练营第一季】进阶班笔记1

【2023 · CANN训练营第一季】进阶班笔记1

时间:2023-05-14 18:32:50浏览次数:41  
标签:进阶 CANN 解码 AIPP 接口 内存 2023 Device DVPP

1.在AscendCL中,关于媒体数据处理V1版本中的内存申请/释放接口acldvppMalloc/acldvppFree:

该接口主要用于分配内存给Device侧媒体数据处理时使用,申请的大页内存满足数据处理的要求(例如,内存首地址128字节对齐)。

调用该接口申请内存后,如果内存不使用,需及时调用acldvppFree接口释放内存

频繁调用acldvppMalloc接口申请内存、调用acldvppFree接口释放内存,对性能有影响。

调用该接口申请大页内存失败,仅表示系统内的大页内存不够。

2.在AscendCL中,关于媒体数据处理中的JPEG图片解码,其支持的场景包括:

只对图片解码,不会改变图片分辨率,因此输出与输入的图片分辨率保持一致

在解码图片时,支持对图片进行旋转

在解码图片时,支持按源图片格式解码

3.关于DVPP:DVPP是N腾AI处理器内置的图像处理单元,通过AscendCL媒体数据处理接口提供强大的媒体处理硬加速能力

JPEGD的硬件约束只支持对顺序式编码的图片进行解码

由于DVPP硬件上的约束,DVPP处理后的图片格式有可能还需要AIPP处理之后,再送入模型推理

4.数字视觉预处理包含的功能:PNGD VENC JPEGD

5.Device侧内存申请时,ACL_MEM_MALLOC_HUGE_ONLY策略为仅申请大页内存

6.关于资源复用,从性能角度,内存复用是为了减少拷贝

7.将Host数据拷贝到DVPP侧时,aclrtMemcpy函数的拷贝类型中应该选择ACL_MEMCPY_HOST_TO_DEVICE

8.acl定义的接口:

aclrtResetDevice aclFinalize aclrtSetDevice

9.在编写模型离线推理执行的代码时需要:

给模型准备输入输出

执行推理过程

把模型加载进内存

10.VPC(媒体数据处理V1版本)的功能:

抠图叠加拼接

11.在AscendCL中,关于媒体数据处理V1版本接口:

媒体数据处理V1版本与媒体数据处理V2版本的接口功能范围相同,都是描述处理媒体数据的接口,用于实现抠图、图片缩放、格式转换等功能,但两套接口不能混用。

视频数据处理的接口,例如acldvppVpcResizeAsync,从接口名称上可以看出,该接口是异步接口,调用接口成功仅表示任务下发成功,不表示任务执行成功。

调用异步接口后,不能马上释放资源,需调用同步等待接口(例如,aclrtSynchronizeStream)确保Device侧任务执行完成后才能释放。

12.在媒体数据处理V1版本中使用JPEGD功能时会有一些约束条件:

JPEGD仅对图片解码,不改变分辨率

JPEGD在解码图片时,支持按源图片格式解码

JPEGD在对图片解码时,支持对图片进行旋转

13.关于运行管理资源:

您需要按顺序依次申请如下资源:Device、Context、Stream,确保可以使用这些资源执行运算、管理任务。

显式创建Context和Stream时,需调用aclrtDestroyStream接口释放Stream,再调用aclrtDestroyContext接口释放Context。

有运行管理资源的申请,自然也有对应的释放接口,需关注资源的释放顺序。

创建Context、Stream的方式分为隐式创建和显式创建,推荐显式,适合大型、复杂交互逻辑的应用,且便于提高程序的可读性、可维护性

14.Device:Device指安装了N腾AI处理器的硬件设备,利用PCIe接口与Host侧连接,为Host提供NN计算能力。若存在多个Device,多个Device之间的内存资源不能共享。

Context:Context作为一个容器,管理了所有对象(包括Stream、Event、设备内存等)的生命周期。不同Context的Stream、不同Context的Event是完全隔离的,无法建立同步等待关系。

Stream:基于Stream的kernel执行和数据传输能够实现Host运算操作、Host与Device间的数据传输、Device内的运算并行。

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

14.在使用AscenCL构建模型输入时,对于多输入的模型:

创建DataBuffer对象创建DataSet对象 创建模型描述

15.使用DVPP开发AcendCL图片应用必须要做的:

数据预处理时,使用VPC进行图片缩放

数据预处理时,使用JPEGD进行图片解码

模型转换时,使用AIPP进行色域转换

16.AIPP的功能:

图像归一化

色域转换

抠图

AIPP支持色域转换(转换图像格式)、图像归一化(减均值/乘系数)和抠图

AIPP主要用于在AI Core上完成数据预处理

模型有多个输入时,可以指定对模型第几个输入进行AIPP处理

AIPP区分为静态AIPP和动态AIPP,只能二选一,不能同时支持

17.DVPP包含了以下功能:视频编解码、抠图、格式转换

18.AscendCL提供的多种图像/视频数据处理方式:

AIPP(Artificial Intelligence Pre-Processing)人工智能预处理,在AI Core上完成数据预处理,主要功能包括改变图像尺寸(抠图、填充等)、色域转换(转换图像格式)、减均值/乘系数(改变图像像素)等

DVPP(Digital Video Pre-Processor)是N腾AI处理器内置的图像处理单元,通过AscendCL媒体数据处理接口提供强大的媒体处理硬加速能力,主要功能包括缩放、抠图、格式转换、图片编解码、视频编解码等

AIPP、DVPP可以分开独立使用,也可以组合使用。组合使用场景下,一般先使用DVPP对图片/视频进行解码、抠图、缩放等基本处理,但由于DVPP硬件上的约束,DVPP处理后的图片格式、分辨率有可能不满足模型的要求,因此还需要再经过AIPP进一步做色域转换、抠图、填充等处理

AscendCL提供了AIPP(Artificial Intelligence Pre-Processing)和DVPP(Digital Video Pre-Processor)两种处理图像/视频数据的方式

19.AscendCL提供的媒体数据处理V1版本接口,关于其接口调用流程:

首先,需创建处理图像/视频的通道,针对不同的功能,需创建对应的通道

其次,在实现各功能前,需调用acldvppMalloc接口申请Device上的内存存放输入或输出数据

然后,调用各功能对应的接口,例如JPEG解码需调用acldvppJpegDecodeAsync接口,由于是异步接口,还需调用aclrtSynchronizeStream接口等待功能执行完成,才能获取到输出数据

19.DVPP(数字视觉预处理)包含以下功能模块:

VPC,含抠图、缩放等功能

JPEGD,JPEG图片解码功能

PNGD,PNG图片解码功能

20.目前PyTorch框架的原始网络模型不可以使用ATC工具转换为N腾AI处理器离线模型

21.在媒体数据处理V1版本中,使用JPEGD图片解码功能需要使用的接口有:

acldvppCreateChannel

acldvppJpegDecodeAsync

acldvppMalloc

标签:进阶,CANN,解码,AIPP,接口,内存,2023,Device,DVPP
From: https://blog.51cto.com/u_15917813/6275095

相关文章

  • 2023.5.9
    索引分类普通索引:不加任何参数,直接通过key或index来创建的索引。是mysql中的基本索引类型,可创建在任意数据类型中。其值是否唯一、非空,则由字段本身的约束决定。唯一索引:在定义索引时,加上unique即可,该索引所在字段的值必须唯一。但允许有空值。在一张数据表里可以......
  • 2023/5/14 遇到关于mongodb部署的问题
    之前使用关于mongodb5的版本中,linux系统中tar解压mongodb文件夹后的bin目录中mongod是启动mongo服务,而里面默认自带一个连接mongodb的shell脚本mongo而这几天使用mongodb6的版本中发现mongo脚本没有了,去网上查看发现是mongodb发行了一个新的shell脚本工具mongosh,这个需要自己安装......
  • [GDOUCTF 2023]Check_Your_Luck
    得到一个c++的源文件:进VSCODE也行,devc++也行IDA也行:得到一个方程组,解开就行,大力推荐手搓(增加数学的能力到了)(我不用)典型的z3,上脚本:s=Solver()v,w,x,y,z=Ints('vwxyz')s.add(v*23+w*-32+x*98+y*55+z*90==333322)s.add(v*123+w*-322+x......
  • c++进阶项目—基于多态的职工管理系统
    一、管理系统需求公司中职工分为三类:普通员工、经理、老板显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责1、普通员工职责:完成经理交给的任务2、经理职责:完成老板交给的任务,并下发任务给员工3、老板职责:管理公司所有事务管理系统中需要实现的功能如下:1、退出管理程序:退......
  • SMU Spring 2023 Contest Round 3(2023年湘潭大学新生赛)
    ProblemA.签到啦从大到小排序,累加大于行李w时输出下标即可intans;voidsolve(){cin>>n>>m;intans=0;vector<int>a(n);for(inti=0;i<n;i++){cin>>a[i];}sort(a.begin(),a.end());reverse(a.begin......
  • 2023 SMU RoboCom-CAIP 选拔赛
    A.小斧头  #include<map>#include<set>#include<cmath>#include<queue>#include<stack>#include<cstdio>#include<vector>#include<climits>#include<cstring>#include<cstdlib>......
  • SMU Spring 2023 Contest Round 1
    B.ContestPreparation#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include<vector>#include<queue>#include<set>#include<map>#defineinf0x3f......
  • SMU Spring 2023 Contest Round 2
    M.DifferentBilling#include<map>#include<set>#include<cmath>#include<queue>#include<cstdio>#include<vector>#include<climits>#include<cstring>#include<cstdlib>#include<......
  • 2023-05-14 leetcode竞赛
    6430. 找出转圈游戏输家mysolution100%passclassSolution:defcircularGameLosers(self,n:int,k:int)->List[int]:seen=set()now_num=1step=1seen.add(1)while1:stepSum=step*ktotal=......
  • 蓝桥杯 2023 省 A 网络稳定性
    蓝桥杯撞题NOIP原题,做法也一模一样(撞题:NOIP2013提高组货车运输)由题意可得这是让我们先求一个最大生成树(把求最小生成树反过来求即可),再求最小边权。求最大生成树我们可以用并查集+排序做出。求最小边权我们可以LCA,也可以树链剖分+线段树维护。后者码量太大(本人太懒),没打算写。......