极术小姐姐 · 1 天前

Armv9 技术讲堂 | 利用 Armv9 CPU 和 SVE2 加速视频解码和图像处理

image.png

随着每一代新产品的推出,Arm CPU 都会实现代际性能提升,并引入架构改进,以满足不断演进的计算工作负载的需求。本文将重点介绍三个用例,以展示 Armv9 CPU 的架构特性在实际场景中产生的影响,特别是在 HDR 视频解码(加速 10%)、图像处理(加速 20%)、主要移动端应用中的功能 LibYUV(加速 26%)。

好消息是,本文中讨论的一些 Arm SVE2 优化现已可供开发者获取使用,有望提升热门媒体应用的用户体验,进一步改善人们沟通、工作和娱乐的方式。

应用开发者和 OEM 厂商面临的挑战

首先,从移动端应用开发者当前面临的挑战来看,目前市场上有超过 200 万个安卓应用[1]在争夺用户的青睐。这些应用要想保持竞争力,就必须迅速将创新成果推广到各种移动设备上。倘若依赖于功能固定的硬件,会面临产品上市时间和可移植性等方面的挑战。

与出色的用户体验相关的指标,包括应用启动时间、UI 流畅度、每秒词元 (token) 数和每秒帧数 (FPS) 稳定性等都需要切实满足用户期望。因此,OEM 厂商需要在性能提升与更广泛的用户需求(如延长电池续航时间、减少数据使用量和设备成本)之间取得平衡。其中任一方面存在不足,都可能导致用户不满意,否定升级移动设备的价值。

在 Armv9 CPU 上开发软件可以解决 OEM 厂商和开发者所面临的挑战。

Armv9 CPU 中 SVE2 的实际用例

让我们来看三个案例研究,证明软件优化可以加速实际工作负载。首先,以下是 SVE2 的一个子集和可加速移动设备上关键工作负载的 Armv9 CPU 中的新矢量指令:

  • 16 位点积和 8 位矩阵乘法,可加速 HDR 视频播放和视频会议。
  • 图像处理直方图指令。
  • 聚合读取和分散存入,用于摄像头传感器数据的解交织处理。
  • 复数指令,用于加速视频编解码器中的快速傅里叶变换。

使用这些矢量指令可使优化的软件使用更少的 CPU 周期,带来两大好处。第一,CPU 周期减少使得能耗降低,增加电池续航时间;第二,提高应用性能。

案例1.SVE2 使视频解码速度提高 10%

观看多媒体内容是移动设备上最常见的工作负载之一,也是移动端网络较大的流量来源。因此,厂商不断追求更高效的编解码器,希望在节省网络带宽的同时,支持出色的图像质量。

HDR 技术由于色彩准确度更高,可呈现更加逼真的细节,即使是在非常暗或非常亮的场景中也是如此。它使用 10 位而非 8 位来表示每个色彩通道。AV1 和 VP9 以及其他现代编解码器,且都支持 HDR 视频。

AV1 是一种较新的格式,可提供更好的压缩效果,而 VP9 则在各种浏览器和设备中具有更广泛的兼容性。一些热门应用都使用 AV1 和 VP9 格式来播放视频。

SVE2 优化使 HDR 视频解码速度提高了约 10%,VP9 解码速度提高了 8%,AV1 解码速度提高了 10%。这使得 CPU 周期减少约 10%,电量消耗也相应减少,让用户在移动设备上播放点播视频时能够获得更长的电池续航时间。如此一来,无论是观看快拍、短片还是长视频,都将变得更加顺畅!

对 libdav1d(Av1 解码器)和 libvpx(Vp9 解码器)的优化代码已经上传,开发者现可获取使用。

案例2.SVE2 使 LibYUV 速度提高了 26%

值得一提的是,我们每个人都在不知不觉中使用了 LibYUV。

LibYUV 是一个开源库,用于 RGB 和 YUV 之间的色彩空间转换、摄像头传感器数据缩放,以及摄像头滤镜和旋转。在经由视频解码器使用之前,它会对来自摄像头传感器的数据进行处理。在很多情况下,视频解码器中的数据会先通过 LibYUV 进行处理,然后再发送去显示。

SVE2 优化使 LibYUV 速度提高了 26%(Armv9 CPU 上多个内核的几何平均值)。LibYUV 中大约有 100 个内核已使用 SVE2 进行了优化,其他内核的优化工作正在进行中。部分工作已完成上传,可在 https://chromium.googlesource... 上查看。

LibYUV 作为 Chromium 的一部分进行分发。Chromium 是一个开源浏览器项目,为 Chrome 及主要手机厂商的定制浏览器(包括小米浏览器和三星浏览器等)奠定了基础。它还被集成到 AOSP 和 Android Jetpack 中。由于 LibYUV 对移动设备至关重要,它有望对整体移动端体验产生深远的影响,例如带来更好的视频会议体验、更顺畅的竖屏和横屏模式切换,以及更好的视频消费体验,并且大大延长电池续航时间。

案例3.SVE2 使计算摄影速度提高 20%

Halide 是一种专门用于图像处理领域的语言,用于 Adobe Photoshop 等应用,一些 OEM 厂商也将它用于摄像头管线。

SVE2 指令(例如聚合读取和分散存入指令)和 TBL(可编程查表,用于矢量化小型查询表)加速了 Halide 中的一些关键计算机视觉流程。iToFDepth(用于感知深度)、双边网格(用于边缘感知色调映射)和局部拉普拉斯(用于滤镜)等计算密集型算法在采用 SVE2 后,性能提升了近 20%。

使用 SVE2 来优化软件可以实时应用一些摄影效果,为入门级移动设备开辟了新的可能性,用户无需专用硬件即可获得更高质量的照片。

Arm 已针对 SVE2 代码生成优化了 Halide 后端。好消息是,一些补丁已经上线,其他补丁也正在开发中。

image.png
图:Halide-SVE2 和 Halide-Neon CPU 周期数对比

image.png
图:深度效果示例图像

image.png
图:边缘感知色调映射示例图像

如何更好地使用 SVE2?

SVE2 引入了几个新指令,非常适合加速关键的实际工作负载和应用。我们将在后续的技术文章中更详细地讨论如何使用 Armv9 CPU 实现一些性能提升,请持续关注“Arm 社区”微信公众号,敬请期待!

Arm 致力于为生态系统找到良好的平衡点,更好地兼顾开发者支持和性能提升。一些针对 SVE2 进行优化的开源库和内核已经上线,未来还会有更多资源。

Armv9 CPU 的最新进展将使开发者能够更快实现创新,为各类移动设备的最终消费者带来更好的用户体验。还等什么,赶紧采用 SVE2 开始你的开发项目,实现创新吧!

END

作者:Arm 终端事业部消费计算市场高级经理 Poulomi Dasgupta
文章来源:Arm社区

推荐阅读

欢迎大家点赞留言,更多Arm技术文章动态请关注极术社区Arm技术专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。

推荐阅读
关注数
23538
内容数
992
Arm相关的技术博客,提供最新Arm技术干货,欢迎关注
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息