Linux 首席架構師,當今全球最著名程序員之一 Linus Torvalds 最近在郵件列表中的言論再次引起一片譁然。

在上週被披露的郵件列表中,有關英特爾將爲下一代 CPU 架構 Alder Lake(和 Sapphire Rapids)啓用的編譯器指令引發了討論,Linus Torvalds 參與其中。

英特爾的下一代處理器架構 Alder Lake x86 平臺或將於 2021 年與人們見面,與突出性能的 AMD 相比,英特爾希望通過和目前手機芯片理念類似的「大小核設計」帶來能效上的大幅改進。文檔披露了三種 CPU 設計,其中最高的是 125W 的 8 + 8 + 1 配置(8 大核 + 8 低功耗核心 + 核顯),其次是 80W 的 8 + 8 + 1 配置,此外有一個 80W 的無小核配置(6 + 0 + 1)。

此前有消息說 Alder Lake 將不支持 AVX512 指令集,只有 AVX2 和其他版本,這可能是因爲英特爾在新設計中需要考慮小核的承載能力。不過最近英特爾的內部文件顯示,AVX512 等指令將僅限在大核中運行。

圖片來自知乎 @JZWSVIC。

有關 AVX512 指令集,Linus 發表了這樣的一段言論:

我希望 AVX512 去死,然後英特爾就可以開始去解決實際問題了——而不是試圖去創造神奇的指令,然後圍繞它尋找基準測試結果讓它看起來很好。

我希望英特爾能夠迴歸本源:讓他們的進程再次發揮作用,更專注於常規代碼,而不是 HPC(高性能計算)或其他意義不大的特例。

在那個時候,除了基準測試,幾乎沒有人會關心這個問題。

但同樣的事發生在 AVX512 上就變得不同了。是的,你可以在這裏找到有用的東西,但它們並不符合廠商繪製的宏偉藍圖。

AVX512 有很明顯的缺點。我寧願看到那些晶體管被用於其他更相關的事情。即使同樣是用於進行浮點數學運算(通過 GPU 來做,而不是通過 AVX512 在 CPU 上),或者直接給我更多的核心(有着更多單線程性能,而且沒有 AVX512 這樣的垃圾),就像 AMD 所做的一樣。

我希望通過常規的整數代碼來達到自己能力的極限,而不是通過 AVX512 這樣的功率病毒來達到最高頻率(因爲人們最終還是會拿它來做 memory-to-memory copy),還佔據了核心的很大面積。

沒錯,我當然有偏見。我非常討厭浮點數基準測試,而且我意識到現在人們都非常關心這個數據。我只是認爲 AVX512 是一個徹頭徹尾的錯誤。這東西讓我如鯁在喉。這是英特爾方向搞錯的一個很好的例子,可能只會讓市場碎片化。

停止這種只適用於特例的垃圾,讓所有核心都能實現人們最關心任務的最大性能,然後製造一個足夠好的「浮點數核心」來解決特殊問題纔是最好的。(在 CPU 上)AVX2 已經足夠了。

是的,我就是這麼暴躁。

——Linus

Linus 爲什麼突然對 AVX512 一頓吐槽?一切還得從指令集的作用開始說起。

在計算機中,程序需要編譯成指令才能讓 CPU 識別並執行運算,指令集是指 CPU 能執行的所有指令的集合,每個指令對應一種操作。指令執行能力是衡量 CPU 性能的重要指標,指令集也與 CPU 效率有密切關係。每種 CPU 都需要一個基本指令集,如英特爾和 AMD 的絕大部分處理器都使用 X86 指令集。

爲了提高 CPU 在某些方面的性能,我們必須增加一些特殊的指令滿足需求,這些新增的指令就構成了擴展指令集。2008 年,英特爾在 Sandy Bridge 酷睿 CPU 架構推出的同時發佈了 AVX 指令集(Advanced Vector Extension,高級矢量擴展指令集),聚焦矢量運算,AVX 很快形成了一套完整的單指令多數據指令集規範,一些版本也得到了 AMD 的支持。

2013 年,英特爾發佈了 AVX-512 指令集,其指令寬度擴展爲 512bit,每個時鐘週期內可打包 32 次雙精度或 64 次單精度浮點運算,因此在圖像 / 音視頻處理、數據分析、科學計算、數據加密和壓縮和深度學習等應用場景中,會帶來更強大的性能表現,理論上浮點性能翻倍,整數計算則增加約 33% 的性能。

AVX 所代表的單指令多數據(Single Instruction Multi Data,SIMD)指令集,是近年來 CPU 提升 IPC(每時鐘週期指令數)上爲數不多的重要革新。隨着每次數據寬度的提升,CPU 的性能都會大幅提升,但同時晶體管數量和能耗也會有相應的提升。因此在對功耗有較高要求的場景,如筆記本電腦或服務器中,CPU 運行 AVX 應用時需要降低頻率從而降低功耗。

隨着人工智能應用的興起,新的 AVX512 指令對於加速 AI 模型的推斷顯得非常有效,但即使是對於 AI 的推斷過程來說,使用 GPU 效率還是比 CPU 高的,不過 GPU 的成本也很高。所以,在技術的發展過程中,消費者和英特爾這樣的處理器生產廠商同樣面臨着道路的選擇:是發展 CPU 的 AI 計算能力,還是尋求其他專用芯片,讓 CPU 做它「該做」的事?

我們知道,程序員大神 Linus 一生噴人無數,C++、Java、英偉達都沒少被他指責過。不過這次,Linus Torvalds 的言論得到了不少人的支持。

「其實這次,Linus 說得對,Intel 當然也知道他說得對,但明知他說得對,(暫時)只能硬着頭皮搞下去。」在知乎上,@Pansz 這樣評價道。

不僅是說說就算了,Linus 還有自己的實踐。早在今年 5 月,Linus 就在一次公開活動中表示自己已改變了十五年來的習慣,轉投 AMD 了,他把自己的個人電腦換成了目前的最高配置,32 核心的 Threadripper 3970x。在一些第三方測試中,這款採用 7 納米制程的 CPU 性能超過了英特爾本世代旗艦產品 Core i9 10980XE。

AMD Zen2 架構的「線程撕裂者」CPU,代表了 AMD 目前消費級處理器的最高水平。

Linus 表示自己用 AMD 芯片替換了原來的英特爾Core i9 9900K,不得不說這個換裝速度有點勤快。「我通常會 DIY 自己的機器,繼續用上一臺配置的固態硬盤等組件,不過這一次(因爲要換主板)我使用了全新的配置,」Linus 說道。

不知幾年之後,是 AMD 宣佈支持 AVX512,還是英特爾放棄這套指令集?

參考內容:

https://www.phoronix.com/scan.php?page=news_item&px=Linus-Torvalds-On-AVX-512

https://www.zhihu.com/question/406517759

相關文章