利用CPU和SVE2加速视讯译码和图像处理
随着每一代新产品的推出,Arm CPU 会实现全新一代的效能提升,并导入架构改进,以满足不断演进的运算工作负载的需求。本文重点介绍三个应用实例,以展示 Armv9 CPU 的架构特性在实际应用场景中产生的影响,尤其是在HDR 视讯译码(加速 10%),图像处理(加速 20%),以及在主要行动应用程序中的功能 LibYUV(加速 26%)。
而本文中讨论的一些 Arm SVE2 优化现已可供开发人员存取使用,有望提升热门的媒体应用程序的用户体验,进一步改善人们沟通、工作和娱乐的方式。
应用开发人员和品牌厂面临的挑战
首先,从行动装置端应用开发人员当前面临的挑战来看,目前市场上有超过200万个安卓(Android)应用程序在争夺用户青睐。这些应用程序想要保持市场竞争力,就必须迅速将创新成果推广到各种行动装置上,若只是依赖功能固定的硬件,将会面临产品上市时间和可移植性等方面的挑战。
与出色的使用者体验相关的指针,包括应用程序启动时间、UI 流畅度、每秒词元 (token) 数和每秒帧数 (FPS) 稳定性等,这些都需要切实满足使用者的期望。因此,品牌商需要在效能提升以及更广泛的使用者需求(如延长电池续航时间、减少数据使用量和装置成本)之间取得平衡。其中任何一个方面若有不足,都可能导致使用者体验打折扣,否定升级行动装置的价值。
在 Armv9 CPU 上开发软件可以解决品牌商和开发人员所面临的挑战。
SVE2 的实际应用实例
以下的三个研究案例,证明软件优化可以加速实际工作负载。首先,以下是 SVE2 的一个子集和可加速行动装置上关键工作负载的 Armv9 CPU 中的新向量指令:包括16 位点积和 8 位矩阵乘法,可加速HDR 视讯播放、视频会议;图像处理直方图指令;聚合读取和分散存入,用于摄影机镜头传感器数据的解交织处理;复数指令,用于加速视频编码器中的快速傅立叶变换。
使用这些向量指令,可使优化的软件使用更少的CPU周期,进而带来两大好处,一是CPU 周期减少使得耗能降低,增加电池续航时间;二是可提高应用程序效能。
【案例 1】SVE2 提高视讯译码速度
观看多媒体内容是行动装置上最常见的工作负载之一,也是行动装置端网络最大的流量来源。因此,厂商不断追求更高效率的编解码器,希望在节省网络带宽的同时,支持出色的图像质量。
HDR技术由于色彩准确度更高,可呈现更加逼真的细节,即使是在非常暗或非常亮的场景中也是如此。它使用 10 位而非 8 位来表示每个色彩通道。AV1 和 VP9 以及其他现代编解码器也支持 HDR 视讯。
AV1 是一种较新的格式,可提供更好的压缩效果,而 VP9 在浏览器和装置之间则具有更广泛的兼容性。像是Netflix、Instagram、Facebook 和YouTube等热门应用程序,都使用 AV1 和 VP9 格式来播放影片。例如libdav1d 作为开源的 AV1 译码器,已内嵌在 Facebook 应用中。
SVE2 优化使 HDR 视讯译码速度提高约10%,VP9 译码速度提高8%,AV1 译码速度提高 10%。这使得 CPU周期减少约10%,电量消耗也相对减少,让用户在行动装置上播放点播影片时能够获得更长的电池续航时间。如此,无论是观看例如脸书或Instagram上的短影音,还是YouTube上的长影片将更加顺畅!开发人员现可存取使用libdav1d(AV1 译码器)和 libvpx(VP9 译码器)的优化程序代码。
【案例 2】SVE2提高LibYUV 速度
值得一提的是,我们每个人都在不知不觉中使用了 LibYUV。
LibYUV 是一个开源函式库,用于RGB 和 YUV 之间的色彩空间转换、摄影机镜头传感器数据缩放,以及摄影机镜头滤除和旋转。在经由视讯译码器使用之前,它会对来自摄影机镜头传感器的数据进行处理。在很多情况下,视讯译码器中的数据会先通过 LibYUV 进行处理,然后再发送去进行显示。
SVE2 优化使 LibYUV 速度提高了 26%(Armv9 CPU 上多个核心的几何平均值)。LibYUV 中大约有 100 个核心已使用 SVE2 进行优化,其他核心的优化工作正在进行中。
LibYUV 的发表是 Chromium 的一部分。Chromium 是一个开源浏览器项目,为 Chrome 及主要手机厂商自定义的浏览器奠定了基础。它被整合到 AOSP 和 Android Jetpack 中。由于 LibYUV 对行动装置相当重要,有望对整体行动装置端体验产生深远的影响,例如带来更好的视频会议体验、更顺畅的直横式屏幕模式切换,以及更好的视讯消费体验,并且大幅地延长电池续航时间。
【案例 3】SVE2 提高运算摄影速度
图一 : Halide-SVE2 和 Halide-Neon CPU 周期数对比
Halide 是一种专门用于图像处理领域的语言,用于 Adobe Photoshop 等应用,一些品牌商也将它用于摄影机镜头管线。
SVE2 指令(例如聚合读取和分散储存指令)和 TBL(可程序设计查表,用于向量化小型查询表)加速了 Halide 中的一些关键计算机视觉 (CV) 流程。iToFDepth(用于感知深度)、双边网格(用于边缘感知色调映射)和局部拉普拉斯(用于滤除)等运算密集型算法,在采用 SVE2 后,其效能提升了近 20%。
使用 SVE2 来优化软件可以实时应用一些摄影效果,为入门级行动装置开启新的可能性,用户无需专用硬件即可获得更高质量的照片。Arm 已针对 SVE2 程序代码生成优化 Halide 后端,而一些修补程序已经上线,也正在开发其他修补程序。
图二 : 深度效果范例图像
图三 : 边缘感知色调映像范例图像
如何善用 SVE2?
SVE2 导入几个新指令,非常适合加速关键的实际工作负载和应用。Armv9 CPU 的最新进展将使开发人员能够更快的实现创新,为各类行动装置的消费者带来更好的使用者体验。
(本文作者为 Arm 终端产品事业部消费运算市场资深经理 Poulomi Dasgupta,中文版校阅者为Arm 首席应用工程师余志诚)
评论