昇腾学院 | Atlas性能调优之编解码

举报
xiongoal 发表于 2020/03/25 02:05:51 2020/03/25
【摘要】 前面介绍了下瓶颈分析和流程编排,这期主要讲一下编解码。一般的推理业务中,对于视频流或者图片,如果使用软件解码,耗时较长,消耗大量CPU资源,解码出来的原图数据,转送到AI处理器上,传输速度比较慢,同时也会占用大量PCIE带宽。 将解码放到Device上,可以减少从Host到Device传输的数据量,同时降低数据传输时间开销和带宽压力 。昇腾310处理器带有DVPP硬件编解码模块,全称Davi...

前面介绍了下瓶颈分析流程编排,这期主要讲一下编解码。

一般的推理业务中,对于视频流或者图片,如果使用软件解码,耗时较长,消耗大量CPU资源,解码出来的原图数据,转送到AI处理器上,传输速度比较慢,同时也会占用大量PCIE带宽。 将解码放到Device上,可以减少从Host到Device传输的数据量,同时降低数据传输时间开销和带宽压力 。

昇腾310处理器带有DVPP硬件编解码模块,全称Davinci Video Pre-Processor。使用Dvpp硬件编解码,可以将码流直接发送到处理器侧,在昇腾310处理器上完成解码、推理一整套流程。

 

DVPP

DVPP硬件编解码模块主要包括视频解码(VDEC)、视频编码(VENC)、JPEG编解码(JPEGD/E)、PNG解码(PNGD)、VPC。

VDEC

前面流程编排优化讲过,h264、h265视频解码,需要调用vdec硬件解码模块,昇腾310处理器有16路1080p解码能力。由于视频帧相互依赖,如果在一个Engine内,设置成多线程,代码处理起来比较麻烦。建议每路视频解码分成一个VdecEngine,线程数设置为1,这样每个VdecEngine只需要处理自己这路视频的数据即可。

Vdec解码输出HFBC数据(即压缩格式,为了降低写内存带宽),为什么要输出这么一个中间格式呢?直接出原图不好么?因为解压缩HFBC数据是VPC模块功能,和VDEC是两个独立模块。

HBFC什么时候可以发挥业务性优势?

2040.png

用户可以从VDEC获取到HFBC数据后,通过调用VPC做resize/crop操作,一次性完成想要的输出结果。比如获取到1920x1080 HFBC数据,调用VPC一次性输出224x224 YUV数据。其中的resize/crop操作是需要用户配置相应参数的,用户可以获取到HFBC数据并随意配置参数调用VPC得到想要的结果,因此暴露了HFBC数据给用户,比较灵活,而且只要一次VPC,性能高(流程图的虚线部分(2))。但是如果用户必须需要原图,那就暂时发挥不了HBFC的最大优势。

 

JPEGD & PNGD

下载Sample DvppImagePerformance(https://developer.huaweicloud.cn/techfield/ascend.htmlzh/developer/mindx-sdk/applicationDetails/60172215?fromPage=2)参考README.md,对代码进行编译。

分别测试下不同线程下JPEGD解码性能,如下图所示

spacer.gifjpegd_fps.PNG可以看出,在线程数设置为3~4时,JPEGD解码1080p图片的性能基本达到最大值。

同样,PNGD在线程数设置为6时性能最佳。spacer.gif

pngd_fps.PNG

注意,该Sample里面是通过创建多个解码Engine、线程数设置为1来实现多线程的,和创建一个解码Engine,修改线程数设置效果一样,减少Engine数量还能减少内存消耗。

 

VPC

前面提到过,昇腾310处理器上面有各种硬件,VDEC、JPEGD负责解码,AI Cpu和AICore负责推理,Ctrl Cpu负责device侧的通用计算,而VPC主要用于处理媒体图像转换,包括放大、缩小、色域转换、降bit数处理、格式转换、区块切割。

对于常见的视频图片推理业务,VPC起串联作用,接收解码的数据,按照要求抠图缩放后送给推理Engine。这里强烈推荐使用VPC的批量抠图功能。比如说,在目标检测完成后,需要依据检测出来的框抠出不同位置、不同大小的图片送到不同的模型进行下一步推理,这里就可以使用VPC的1抠N功能,可以减少硬件调用次数,提高效率。

 

 


总体来说,编解码这块性能比较固定,可以调优的地方不多,按照建议开发代码即可。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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