利用CPU和SVE2加速視訊譯碼和圖像處理
隨著每一代新產(chǎn)品的推出,Arm CPU 會(huì)實(shí)現(xiàn)全新一代的效能提升,并導(dǎo)入架構(gòu)改進(jìn),以滿足不斷演進(jìn)的運(yùn)算工作負(fù)載的需求。本文重點(diǎn)介紹三個(gè)應(yīng)用實(shí)例,以展示 Armv9 CPU 的架構(gòu)特性在實(shí)際應(yīng)用場(chǎng)景中產(chǎn)生的影響,尤其是在HDR 視訊譯碼(加速 10%),圖像處理(加速 20%),以及在主要行動(dòng)應(yīng)用程序中的功能 LibYUV(加速 26%)。
而本文中討論的一些 Arm SVE2 優(yōu)化現(xiàn)已可供開(kāi)發(fā)人員存取使用,有望提升熱門(mén)的媒體應(yīng)用程序的用戶(hù)體驗(yàn),進(jìn)一步改善人們溝通、工作和娛樂(lè)的方式。
應(yīng)用開(kāi)發(fā)人員和品牌廠面臨的挑戰(zhàn)
首先,從行動(dòng)裝置端應(yīng)用開(kāi)發(fā)人員當(dāng)前面臨的挑戰(zhàn)來(lái)看,目前市場(chǎng)上有超過(guò)200萬(wàn)個(gè)安卓(Android)應(yīng)用程序在爭(zhēng)奪用戶(hù)青睞。這些應(yīng)用程序想要保持市場(chǎng)競(jìng)爭(zhēng)力,就必須迅速將創(chuàng)新成果推廣到各種行動(dòng)裝置上,若只是依賴(lài)功能固定的硬件,將會(huì)面臨產(chǎn)品上市時(shí)間和可移植性等方面的挑戰(zhàn)。
與出色的使用者體驗(yàn)相關(guān)的指針,包括應(yīng)用程序啟動(dòng)時(shí)間、UI 流暢度、每秒詞元 (token) 數(shù)和每秒幀數(shù) (FPS) 穩(wěn)定性等,這些都需要切實(shí)滿足使用者的期望。因此,品牌商需要在效能提升以及更廣泛的使用者需求(如延長(zhǎng)電池續(xù)航時(shí)間、減少數(shù)據(jù)使用量和裝置成本)之間取得平衡。其中任何一個(gè)方面若有不足,都可能導(dǎo)致使用者體驗(yàn)打折扣,否定升級(jí)行動(dòng)裝置的價(jià)值。
在 Armv9 CPU 上開(kāi)發(fā)軟件可以解決品牌商和開(kāi)發(fā)人員所面臨的挑戰(zhàn)。
SVE2 的實(shí)際應(yīng)用實(shí)例
以下的三個(gè)研究案例,證明軟件優(yōu)化可以加速實(shí)際工作負(fù)載。首先,以下是 SVE2 的一個(gè)子集和可加速行動(dòng)裝置上關(guān)鍵工作負(fù)載的 Armv9 CPU 中的新向量指令:包括16 位點(diǎn)積和 8 位矩陣乘法,可加速HDR 視訊播放、視頻會(huì)議;圖像處理直方圖指令;聚合讀取和分散存入,用于攝影機(jī)鏡頭傳感器數(shù)據(jù)的解交織處理;復(fù)數(shù)指令,用于加速視頻編碼器中的快速傅立葉變換。
使用這些向量指令,可使優(yōu)化的軟件使用更少的CPU周期,進(jìn)而帶來(lái)兩大好處,一是CPU 周期減少使得耗能降低,增加電池續(xù)航時(shí)間;二是可提高應(yīng)用程序效能。
【案例 1】SVE2 提高視訊譯碼速度
觀看多媒體內(nèi)容是行動(dòng)裝置上最常見(jiàn)的工作負(fù)載之一,也是行動(dòng)裝置端網(wǎng)絡(luò)最大的流量來(lái)源。因此,廠商不斷追求更高效率的編解碼器,希望在節(jié)省網(wǎng)絡(luò)帶寬的同時(shí),支持出色的圖像質(zhì)量。
HDR技術(shù)由于色彩準(zhǔn)確度更高,可呈現(xiàn)更加逼真的細(xì)節(jié),即使是在非常暗或非常亮的場(chǎng)景中也是如此。它使用 10 位而非 8 位來(lái)表示每個(gè)色彩通道。AV1 和 VP9 以及其他現(xiàn)代編解碼器也支持 HDR 視訊。
AV1 是一種較新的格式,可提供更好的壓縮效果,而 VP9 在瀏覽器和裝置之間則具有更廣泛的兼容性。像是Netflix、Instagram、Facebook 和YouTube等熱門(mén)應(yīng)用程序,都使用 AV1 和 VP9 格式來(lái)播放影片。例如libdav1d 作為開(kāi)源的 AV1 譯碼器,已內(nèi)嵌在 Facebook 應(yīng)用中。
SVE2 優(yōu)化使 HDR 視訊譯碼速度提高約10%,VP9 譯碼速度提高8%,AV1 譯碼速度提高 10%。這使得 CPU周期減少約10%,電量消耗也相對(duì)減少,讓用戶(hù)在行動(dòng)裝置上播放點(diǎn)播影片時(shí)能夠獲得更長(zhǎng)的電池續(xù)航時(shí)間。如此,無(wú)論是觀看例如臉書(shū)或Instagram上的短影音,還是YouTube上的長(zhǎng)影片將更加順暢!開(kāi)發(fā)人員現(xiàn)可存取使用libdav1d(AV1 譯碼器)和 libvpx(VP9 譯碼器)的優(yōu)化程序代碼。
【案例 2】SVE2提高LibYUV 速度
值得一提的是,我們每個(gè)人都在不知不覺(jué)中使用了 LibYUV。
LibYUV 是一個(gè)開(kāi)源函式庫(kù),用于RGB 和 YUV 之間的色彩空間轉(zhuǎn)換、攝影機(jī)鏡頭傳感器數(shù)據(jù)縮放,以及攝影機(jī)鏡頭濾除和旋轉(zhuǎn)。在經(jīng)由視訊譯碼器使用之前,它會(huì)對(duì)來(lái)自攝影機(jī)鏡頭傳感器的數(shù)據(jù)進(jìn)行處理。在很多情況下,視訊譯碼器中的數(shù)據(jù)會(huì)先通過(guò) LibYUV 進(jìn)行處理,然后再發(fā)送去進(jìn)行顯示。
SVE2 優(yōu)化使 LibYUV 速度提高了 26%(Armv9 CPU 上多個(gè)核心的幾何平均值)。LibYUV 中大約有 100 個(gè)核心已使用 SVE2 進(jìn)行優(yōu)化,其他核心的優(yōu)化工作正在進(jìn)行中。
LibYUV 的發(fā)表是 Chromium 的一部分。Chromium 是一個(gè)開(kāi)源瀏覽器項(xiàng)目,為 Chrome 及主要手機(jī)廠商自定義的瀏覽器奠定了基礎(chǔ)。它被整合到 AOSP 和 Android Jetpack 中。由于 LibYUV 對(duì)行動(dòng)裝置相當(dāng)重要,有望對(duì)整體行動(dòng)裝置端體驗(yàn)產(chǎn)生深遠(yuǎn)的影響,例如帶來(lái)更好的視頻會(huì)議體驗(yàn)、更順暢的直橫式屏幕模式切換,以及更好的視訊消費(fèi)體驗(yàn),并且大幅地延長(zhǎng)電池續(xù)航時(shí)間。
【案例 3】SVE2 提高運(yùn)算攝影速度
圖一 : Halide-SVE2 和 Halide-Neon CPU 周期數(shù)對(duì)比
Halide 是一種專(zhuān)門(mén)用于圖像處理領(lǐng)域的語(yǔ)言,用于 Adobe Photoshop 等應(yīng)用,一些品牌商也將它用于攝影機(jī)鏡頭管線。
SVE2 指令(例如聚合讀取和分散儲(chǔ)存指令)和 TBL(可程序設(shè)計(jì)查表,用于向量化小型查詢(xún)表)加速了 Halide 中的一些關(guān)鍵計(jì)算機(jī)視覺(jué) (CV) 流程。iToFDepth(用于感知深度)、雙邊網(wǎng)格(用于邊緣感知色調(diào)映射)和局部拉普拉斯(用于濾除)等運(yùn)算密集型算法,在采用 SVE2 后,其效能提升了近 20%。
使用 SVE2 來(lái)優(yōu)化軟件可以實(shí)時(shí)應(yīng)用一些攝影效果,為入門(mén)級(jí)行動(dòng)裝置開(kāi)啟新的可能性,用戶(hù)無(wú)需專(zhuān)用硬件即可獲得更高質(zhì)量的照片。Arm 已針對(duì) SVE2 程序代碼生成優(yōu)化 Halide 后端,而一些修補(bǔ)程序已經(jīng)上線,也正在開(kāi)發(fā)其他修補(bǔ)程序。
圖二 : 深度效果范例圖像
圖三 : 邊緣感知色調(diào)映像范例圖像
如何善用 SVE2?
SVE2 導(dǎo)入幾個(gè)新指令,非常適合加速關(guān)鍵的實(shí)際工作負(fù)載和應(yīng)用。Armv9 CPU 的最新進(jìn)展將使開(kāi)發(fā)人員能夠更快的實(shí)現(xiàn)創(chuàng)新,為各類(lèi)行動(dòng)裝置的消費(fèi)者帶來(lái)更好的使用者體驗(yàn)。
(本文作者為 Arm 終端產(chǎn)品事業(yè)部消費(fèi)運(yùn)算市場(chǎng)資深經(jīng)理 Poulomi Dasgupta,中文版校閱者為Arm 首席應(yīng)用工程師余志誠(chéng))
評(píng)論