前言:
半導體產品未來可能將沿著標準化與定制化交替發展的路線前進,每十年波動一次,半導體技術未來要依靠上述定律維持其高增長的創新速度。
過去數年我們一直在呼喚AI 芯片和高性能計算芯片,那么下一個波峰將是超高靈活度集成的芯片GPGPU。
時代召喚:從GPU到GPGPU
早年的GPU專用于圖形計算加速,在不斷的發展和演進之中,逐漸進化出越來越多的通用屬性,也即可編程性。
CUDA是英偉達在GPU應用于高性能異構計算領域在編程方面的一大創舉,CUDA可以基于C語言、C++和Fortran、Python等語言直接開發應用程序,并構建起極為龐大的開發用戶群,這奠定了GPU可以廣泛應用的技術基礎和生態力量。CUDA的推出,也開啟了英偉達的GPGPU戰略。
GPGPU,也有人稱之為GP2U(GP的兩次方U)。兩個GP代表著不同的含義:后邊的GP表示圖形處理(Graphic Process),和U組合一起是我們熟知的GPU(圖形處理器);前一個GP則表示“通用目的”(General Purpose)。
GPGPU不是一款具體的芯片,而是一種概念,即利用圖形處理器進行一些非圖形渲染的高性能計算。
從狹義上來講,GPGPU在GPU的基礎上進行了優化設計,使之更適合高性能并行計算,并能使用更高級別的編程語言,在性能、易用性和通用性上更加強大。
GPU應用于AI計算,無論是云端訓練還是終端推理,其本質都是GPU通用屬性的一個方向。
根據算法的不同,GPU的運行速度可以比CPU快10倍到100倍以上。目前世界上最先進的超級計算機多數是基于GPGPU技術來實現的。
小眾玩家:GPGPU領域的玩家
·英偉達是GPU帶到通用計算領域的先驅,其GPGPU憑借并行計算的優勢和完整強大的通用并行計算架構CUDA幾乎壟斷云端訓練芯片市場。
·AMD就發布過一款“流處理器”,算是AMD最早的GPGPU的嘗試。但當時那款“流處理器”只是GPGPU的一個“雛形”,遠未發揮出GPGPU的真正威力。
·英特爾也在加緊布局通用GPU,從開始對GPU的不屑,到基于自家的x86架構開發獨立顯卡,英特爾折騰了十年之久仍然沒做出來一款像樣的GPU。
壓力山大:現階段都要面對的挑戰
①盡管將GPU大規模部署到電子戰等嵌入式系統中會面臨諸多困難,會需要若干年的努力,但同樣的,要引入其它技術路線也非常困難。
②處理器技術的快速更新與迭代,這使得任何電子戰系統承包商都幾乎不可能將其技術路線依托于單一處理器架構,尤其是當前存在諸多可選項的情況下。
③將GPU應用于各種電子戰平臺所必須承受的惡劣工作環境的全面的、充分的驗證,包括地面、海上、空中甚至是太空環境,這需要數十年的時間。
無論如何,將定點和浮點處理結合在同一個芯片上為提高電子戰系統性能的提升提供了誘人的前景,減少時延也是一個無休止的目標和挑戰。
困難重重:研發GPGPU的難點
從硬件角度看,最核心的是指令集。指令集的覆蓋面、顆粒度、效率等決定一款芯片能否覆蓋到足夠寬的應用領域,對軟件開發和產品迭代是否足夠友好。
無論英偉達還是AMD的GPGPU,指令集都在千條量級,對比目前國內的AI芯片指令集大多都在百條以內。類型與數量的差別映射到硬件高效實現的復雜程度,差距是巨大的,在這方面國內的團隊還存在著一定的差距。
②基于硬件層的任務管理和智能調度。這是讓芯片從硬件層即提高算力的利用率,也就是大家常說的實際算力。
大多數AI芯片依賴于軟件層的調度實現,這種方式有三個短板:第一增加了軟件開發的復雜度,第二降低了硬件算力的利用率,第三減緩了軟件棧迭代更新的速度。在AI領域,算法模型、開發環境、應用場景都在加速更新,這無疑大大增加了產品落地與工程化的難度。
③軟件層面最重要的是開發生態。GPGPU通過英偉達十多年的耕耘,已經建立起了一個超過160萬開發用戶的龐大而成熟的生態——CUDA。
④AI芯片若需要搭建全新的生態,會帶來兩個維度的問題:第一,客戶需要冗長的適配期,從原有的開發環境切換到新的軟件生態,這不僅需要資源投入,還要推遲業務部署時間窗口,同時增加了業務的不確定性。
值得一戰:國內企業挑戰與機遇
過去一年,AI芯片創企們從秘密造芯的狀態走出,多數創企選擇切入的是終端市場,少數玩家選擇進軍被美國半導體巨頭們蠶食掉大半江山的云端,而選擇做GPGPU芯片的玩家更是寥寥無幾。
NVIDIA早早憑借強大的GPU+CUDA方案切入深度學習領域,用大筆研發投入和時間堆積起堅不可摧的生態城墻,而這恰恰是國內外其他玩家都相對薄弱的環節。
GPGPU創企們還需在CUDA生態的基礎上來推廣自己的芯片,但隨著初代芯片陸續順利落地,若想真正實現自主可控,打造完整的國產核心技術生態體系是必經之路。
CPU因為有著通用性的需求,所以往往它上面單個核心會設計的非常大而全面,并且由于CPU計算的特性,核心中很大一部分面積用來構建緩存(一個核心中往往有L1和L2兩級緩存)和控制單元(解碼器與分支預測等前端單元),而實際用來運算的單元面積可能僅僅只占整個核心的一半甚至不到。
種種原因使得CPU沒有辦法做非常大的規模,一個核心中能塞入的東西有限,而總體的核心數需要控制在一個合理范圍中,多了就可能會發生各種各樣的問題。
明面上,現在是異構計算的天下,近年來傳統以CPU為核心的服務器市場增長比較平緩,而GPU服務器的增速迅猛,年增長率據稱超60%。
只不過在現階段,國產替代方案還要在CUDA生態的基礎上推廣自己的芯片產品,在兼容CUDA的同時,建設新生態。在這個過程中,每一步都關鍵且充滿挑戰。
潛在因素則在于5G時代的到來推動了物聯網的迅猛發展,應用場景更加豐富多元,這要求云端的計算資源能應對各種復雜場景的需求提供豐富靈活的計算支撐,工程師們肯定更愿意將能“通吃”的芯片焊在服務器上。
圍繞GPGPU,國外已是龍爭虎斗,反觀國內,能夠洞悉GPGPU發展機遇并付諸行動的芯片廠商少之又少。
華為是為數不多看到通用GPU趨勢的芯片廠商之一,而且看起來正在嘗試兩條腿走路通往GPGPU的路上。
結尾:
GPGPU這個相對于PC整個歷史還算是比較新的概念,經過十余年的發展已經不僅局限于PC,還走向了其他領域,扎根于我們生活的每個角落。
GPGPU已經在許多云計算平臺上得到了應用,相信在以后,GPU會更加深入我們電子生活的方方面面,在那里默默地發熱。