AVX指令集作用和應用介紹 AVX指令集是什么( 二 )


AVX指令集作用和應用介紹 AVX指令集是什么

文章插圖
【AVX指令集作用和應用介紹 AVX指令集是什么】
長長的AVX-512子集列表
目前只有基于Skylake-Server和Ice Lake這兩個架構的處理器可以支持AVX-512(Cannon Lake死了,不然也算),使用門檻較高,一般新一點的應用也只是針對AVX2進行優化 。
寬度越大,處理器的計算能力也就越強,尤其是在浮點運算方面,理論上提升有一倍之多,而實際應用中,如果優化得當,其提升幅度還要大一些 。但是,新指令集在帶來性能增長的同時也帶來了另一個讓人感到頭痛的問題——功耗 。
性能強了,峰值功耗也高了AVX指令集在帶來更高性能的同時讓CPU的峰值功耗也變高了,可以通過下面的例子進行理解:
飛機發動機是按照最大起飛重量設計的,如果實際的載重沒有到最大起飛重量的話,飛行員就可以減推力起飛來降低油耗 。CPU也是一樣的,最吃功耗的執行單元是根據最大寬度來設計的,平時用不到最大寬度的時候它的功耗就小了,而一旦用到極限,它也就會全開,此時CPU的功耗就上去了 。
Intel AVX is Designed to achieve higher throughput for certain integer and floating-point operations. Using these instructions may cause processors to operate at less than the marked TDP frequency. These reductions in frequency occur because high-power Intel AVX instructions require additional voltage and electrical current.
現如今CPU的功耗是根據負載大小來的,在同頻下面,AVX2的負載明顯高于SSE負載,因此它的功耗也會大上去 。為了讓CPU的功耗保持在TDP范圍之內,Intel特地設計了一個AVX偏移頻率,讓工作在AVX狀態下面的處理器降低一點頻率以減小發熱量和功耗,保證使用安全 。Intel官方也在2014年的一份AVX指令集優化白皮書中明確說明使用AVX指令集需要額外的電壓和電流 。
只在跑分上看到?其實不然對于我們這些要做跑分評測的編輯來說,最常接觸到的AVX應用其實就是AIDA64了,那么可能有讀者就要問了,這個指令集都已經推出十年了難道只能用來跑分烤機嗎?當然不是,在Intel的推廣之下,現如今已經有大量的生產力應用支持它了,主要在渲染、視頻編碼、加解密和數學計算等方面有應用,新的AVX-512還針對深度學習推出了AVX-512 VNNI子集,另外,普通玩家最為關心的游戲方面也是有越來越多的應用了,下面舉幾個例子 。
渲染、視頻編碼渲染方面最常見的有Blender,它不僅僅在我們的測試中被用的多,是真的有很多人都會用它做動畫或者CG圖,它的渲染引擎可以調用AVX2指令集進行加速計算,吃滿你的CPU 。
跟渲染方面有點搭邊的就是視頻編碼了,x264和x265這兩個知名開源視頻編碼器想必已經不用再多介紹了,它們都在前幾年中紛紛加入了對于AVX指令集的支持,后者甚至加入了針對AVX-512的支持,不過還需要繼續優化 。另外,Intel方面自己也開源了一套名為SVT的視頻編碼器,配合不同后端可以實現不同的編碼,對AVX和多核的優化相當好 。
深度學習深度學習方面,Google著名的開源深度學習框架Tensorflow在1.6版本之后就已經需要一顆支持AVX指令集的CPU了,換言之,它應用了AVX指令集 。
另外,AVX-512的大寬度讓它很適合用來跑深度學習,所以Intel也針對深度學習設計了一套子指令集——AVX-512 VNNI,用來加速深度學習相關的計算,在測試中,它表現出了相當的實力 。
加解密加解密計算場景中對CPU的計算吞吐量有較大的要求,此時AVX指令集就可以發揮作用,常見的軟件支持就有OpenSSL這個堪稱是互聯網基石的加密庫,另外像很多程序會使用的libsodium加密庫也提供了從AVX到AVX-512的優化,而Linux內核也支持使用AVX和AVX2指令集進行加解密計算,還會配合AES-NI這個專用的指令集 。實際上目前還有很多數字貨幣的計算過程支持使用AVX指令集,不過這個應該是真的沒有人會用了……
游戲近兩三年的大作基本都開始啟用AVX指令集來進行計算了,一般在游戲中CPU負責除了圖形以外的雜活,比如說計算各種NPC的運動路徑,計算各種動體的軌跡這樣的雜活 。不過近兩年也有廠商想讓Intel參與進游戲圖形計算,甚至是當下熱門的光線追蹤運算,比如Intel的光線追蹤計算庫Embree就可以被整合進游戲中,目前已經有《坦克世界》等游戲使用了它,Embree庫高度依賴AVX指令集,也對CPU的游戲性能提出了新的闡述方式:直接參與圖形渲染 。
總結:未來是AVX的總的來說,AVX目前還沒有完全展露出它的價值,這也是軟件優化缺位導致的 。不過隨著各路編譯器的跟進、處理器迭代使得支持AVX指令集的處理器普及,相信我們的常用軟件也會加入AVX優化,比如說在圖片處理時調用它 。配合上已經展開應用的各種生產力應用,AVX的前景非常廣闊 。

推薦閱讀