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

举报
tang121212 发表于 2023/05/14 17:33:43 2023/05/14
【摘要】 1.在AscendCL中,关于媒体数据处理V1版本中的内存申请/释放接口acldvppMalloc/acldvppFree:该接口主要用于分配内存给Device侧媒体数据处理时使用,申请的大页内存满足数据处理的要求(例如,内存首地址128字节对齐)。调用该接口申请内存后,如果内存不使用,需及时调用acldvppFree接口释放内存频繁调用acldvppMalloc接口申请内存、调用acldv...

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

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

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

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

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

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

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

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

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

3.关于DVPP:DVPP是昇腾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指安装了昇腾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)是昇腾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工具转换为昇腾AI处理器离线模型

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

acldvppCreateChannel

acldvppJpegDecodeAsync

acldvppMalloc

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。