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