FFmpeg開發人員聲稱使用手寫AVX-512指令可將效能提高94倍
高階向量擴展是x86 指令集架構的一種”單指令、多資料”擴展,由Intel 和AMD 在現代CPU 中實現。 這些指令可顯著增強平行處理工作負載,尤其是與512 位元暫存器和AVX-512 指令集中的其他進階功能配合使用時。
FFmpeg 團隊最近強調了AVX-512 指令如何在視訊處理工作負載中顯著提升效能。 根據其中一位開發人員展示的幻燈片,利用這些SIMD 指令的優化”手寫彙編”可以將視訊解碼程式的速度提高3 到94 倍。
雖然沒有提供用於基準測試的CPU 或系統的具體信息,但AVX-512 技術於2016 年首次出現在英特爾的Xeon Phi x200(Knights Landing)CPU 系列中。 AVX-512 向量指令與高度優化的彙編程式碼的結合大幅提升了效能,儘管AVX 指令從一開始就是為增強SIMD 並行處理而設計的。
FFmpeg 是一款免費的開源軟體包,它提供了一整套用於處理音訊和視訊串流的庫和工具,是名副其實的”多媒體瑞士軍刀”,被VLC 等流行媒體播放器和YouTube 等大型企業所採用。 FFmpeg 核心團隊負責監督該項目,而志工社群則提供程式碼和修補程式。
開發人員說,FFmpeg 目前約有8% 的程式碼依賴彙編語言,因此還有很大的改進空間。 彙編語言是一種低階語言,如今很少有程式設計師會專門學習這種語言,尤其是因為軟體產業現在大多優先使用高階、易學的語言,如Python 。
儘管如此,熟練的開發人員總是渴望在最新的硬體上最大限度地提高效能。 FFmpeg 包括針對x86 和ARM 處理器的自訂”手寫”解碼例程,儘管軟體行業中有些人希望AVX-512 能”痛苦地死去“。
最近,英特爾推出了AVX10,這是一種重新構想的ISA,在所有x86 CPU 體系結構和核心類型中實現了AVX-512 指令的標準化。 然而,Intel 在第12 代酷睿處理器及其後續型號的韌體層級上禁用了AVX-512 支持,從而有效地將SIMD ISA 從其消費性晶片中移除,這在業界掀起了軒然大波。