電子發燒友網報道(文/吳子鵬)GPU誕生的原因是人們需要更好地處理3D游戲中的圖形渲染,因此GPU擁有很多很小的內核增加并行處理能力,然后通過圖形流水線的模式做圖形處理。由于天生核心數量多,因此GPU計算能力增加迅速,業界普遍認為2004年前后GPU計算能力已經超過CPU,此后兩者之間的算力差距越拉越大。
擁有強大算力之后,更多的應用開始找上GPU,比如氣候檢測,還有時下大熱的深度學習等??焖僭鲩L的計算需求也開始改變GPU,早期用于通用計算的GPU實際上還是遵循圖形處理的原則來設計,內部依然有Vertex級處理器以及Fragment級處理器,面向其他運算需求顯得“不倫不類”,直到英偉達設計出了統一處理器。
此后,GPGPU在任務清晰且計算量要求大的領域,比如矩陣的計算上優勢愈發凸顯。受益于人工智能、大數據和萬物互聯等多層buff加持,越來越多的行業開始提出這樣的計算需求,GPGPU前景光明且市場巨大。在這樣的背景下,目前國內已經涌現出一批GPGPU企業,沐曦集成電路(上海)有限公司(以下簡稱:沐曦)便是其中之一,該公司致力于提供高性能GPU。
軟件棧決定了用戶群大小和用戶體驗
回顧GPGPU的發展,我們發現市場需求不僅是改變了GPGPU的核心布局,同時為了兼顧通用性,軟件端也發展了巨大的改變,從OpenGL演化出統一計算架構CUDA。沐曦光啟智能研究院科學家李兆石在接受電子發燒友采訪時表示,“GPGPU作為一款通用芯片,在面對不同客戶層出不窮的新需求時,需要保證它的可編程性??删幊绦允怯赏晟频能浖肀WC的。
對于所有GPGPU來說,軟件棧的規劃直接決定了GPGPU用戶受眾群體大小和用戶使用體驗。因此所有的GPGPU,不論是否國產,都會擁有自己的運算平臺,即軟件棧。比如AMD面向它的MI系列GPGPU,對標CUDA,開發了RoCM,并在RoCM之上移植了PyTorch等AI軟件框架?!?/p>
他強調GPGPU上軟件棧是至關重要的,對此他通過分析英偉達的CUDA來解釋原因?!癎PGPU芯片非常龐大,最新的Nvidia A100上有542億個晶體管,它們構成了6912個并發執行的CUDA內核,以及為了保證CUDA內核的數據供給而設計的一套復雜的存儲子系統。
考慮到人的思維方式是串行的,用戶很難處理這么多的并發執行單元,因此這么多并發的硬件資源不可能直接暴露給用戶。所以我們需要有一套軟件棧將底層硬件架構的特征抽象成易于理解的編程模型提供給用戶,從而讓用戶充分開發GPGPU的潛力?!?/p>
李兆石講到,“然而抽象是有代價的:抽象掩藏掉的硬件細節越多,編程模型對用戶越友好,那么它會越難充分發揮硬件的全部潛力。因此GPGPU的抽象是分層次的:越靠近用戶的層次越易用,同時該層次的性能或者靈活性會越差。這樣特定應用領域的用戶,如果重心在開發效率,可以選擇高層次的編程模型;而需要榨取GPGPU性能潛力的用戶可以選擇低層次的編程模型。這也正是我們把GPGPU的編程模型稱為‘軟件棧’的原因?!?/p>
目前,國產GPGPU顯然還是跟隨者的狀態,雖然廠商在積極地推進架構創新和軟件創新,但和英偉達之間的差距還是巨大的,因此從英偉達身上國產GPU還有很多經驗可以汲取。李兆石對英偉達在GPGPU上面的軟件實力有著清晰的認識。
他指出:“英偉達的AI軟件棧自底向上至少可以分成5層:SASS是硬件實際執行的指令集,類似CPU的匯編;PTX是虛擬指令集,為不同代的Nvidia GPGPU提供了一個統一的編程接口;CUDA是用戶在編寫高性能GPGPU程序時最主要的編程模型;
cuBLAS, cuDNN, cuFFT, CUTLASS等運算庫則讓用戶可以通過調用Nvidia針對自家GPGPU高度定制的算子庫,不需要花費太多精力進行性能調優就可以享受到Nvidia GPGPU最好的性能,但它們靈活性受限;TensorRT, Triton, Megastron則是Nvidia針對特定AI應用場景深度定制,讓AI類用戶開箱即用的軟件平臺?!?/p>
可以看出,CUDA處于中間層。CUDA提供了硬件的直接訪問接口,而不必像傳統方式一樣必須依賴圖形API接口來實現GPU的訪問。CUDA采用C語言作為編程語言提供大量的高性能計算指令開發能力,使開發者能夠在GPU的強大計算能力的基礎上建立起一種效率更高的密集數據計算解決方案。
李兆石認為:“對于新興的國產GPGPU而言,構建自己的軟件棧時,首要任務是先打好基礎,對標CUDA及以下的抽象層次,充分發揮自己芯片的特色,開發出一套用戶可用、易用的編程模型,正所謂‘不積硅步無以至千里’。然后再結合目標客戶的需求,對標TensorRT等框架,定制開箱即用的高層次編程模型。”
在此,他談到了沐曦的規劃。當前,沐曦GPGPU的芯片架構和軟件棧是同時開發的。芯片架構上與現有GPGPU擁有不同的新特性,在設計之初都充分考慮了如何在各個層次的編程模型中進行抽象。這樣,沐曦可以保證用戶即可以平滑地從現有GPGPU遷移到沐曦的GPGPU上,又能在使用沐曦的軟件棧時充分享受到新特性帶來的更好體驗。
著眼于未來的發展,英偉達CUDA既是國產GPGPU在并行計算架構方面的老師,也是最大的勁敵。目前,CUDA已經能夠支持DX12這樣的API,也支持C語言、Fortran、OpenCL等計算語言,其生態屬性非常強大。
并且根據英偉達官方的說法,CUDA未來的發展是開放性的技術平臺,支持更多的并行計算需求。這樣的CUDA會給國產GPGPU在軟件棧方面的發展造成巨大的困擾,因此李兆石呼吁:“國內各家GPGPU創業公司都有自研IP和軟件棧的規劃。從公開的信息來看,各家公司的軟件棧規劃都存在一定的共性。希望未來大家可以多多相互交流,共同進步?!?/p>
傳統GPU的軟件棧很難遷移到GPGPU上
GPGPU在GPU的基礎上進行了優化設計,使之更適合高性能并行計算,并能使用更高級別的編程語言,在性能、易用性和通用性上更加強大。相較而言,國產GPU的啟動比國產GPGPU要提前一些,是否有經驗可循呢?
李兆石認為:“傳統GPU主要面向圖形渲染類應用。對于Nvidia來說,圖形渲染類應用的軟件棧與GPGPU的軟件棧,只有底層的SASS, PTX和少量CUDA是共享的。再往上走的圖形渲染API層,如OpenGL, Vulkan等,目前GPGPU還不需要支持。
國產傳統的圖形渲染GPU,大多基于自研的匯編層,對提供圖形渲染API層提供支持。我們的底層設計(與Nvidia SASS和PTX同層次的匯編)與Nvidia及其它國產GPU是不同的,因此傳統的圖形渲染GPU軟件棧難以直接遷移到GPGPU上?!?/p>
應用領域方面,GPGPU將應用擴展到了圖形之外,在科學計算、區塊鏈、大數據處理、工程計算、金融、基因等方面都有重要的應用,但更多是以服務器的形態提供高算力。
在應用層面,目前傳統GPU和CPU的融合趨勢已經顯現,比如AMD APU系列,蘋果的M1芯片、以及大多數手機SoC芯片等,它們的CPU和GPU都是直接在物理上共享內存。這些芯片通過CPU和GPU的緊密耦合,避免了CPU和GPU之間數據跨芯片搬運的能量消耗。
李兆石表示:“對于GPGPU而言,目前市面上還沒有成熟的產品,讓CPU和GPGPU在同一個die上緊密耦合。造成這一現象的原因有兩個。首先,CPU和GPGPU之間的通信延遲或帶寬,在目前流行的GPGPU應用中不是系統的瓶頸。
GPGPU的編程模型中,CPU與GPGPU間的通信用于處理應用中的控制邏輯。而GPGPU通常用來處理計算密集型應用或者訪存密集型應用,其瓶頸在于GPGPU上的計算資源、或者GPGPU與顯存(GDDR或者HBM)之間的通信帶寬。
控制密集型應用很少大規模部署在GPGPU上。其次,GPGPU通常以加速卡的形式部署在服務器上,服務器廠商出于成本、可靠性和可擴展性的考慮,會分別采購CPU和GPGPU。”
“不過,對于CPU和GPGPU的融合,我們還是要以發展的眼光看問題。從應用需求的角度,隨著張量加速單元和HBM技術在GPGPU的普及,GPGPU的計算和訪存能力快速提升。正所謂‘按下葫蘆浮起瓢’,此時CPU和GPGPU的通信代價正在變得越來越顯著。
尤其當我們考慮到新興的Pytorch等AI框架的動態圖特性會引入非常頻繁的CPU-GPGPU之間的交互時,低延遲的CPU-GPGPU緊耦合架構就變得更有價值了。從系統設計的角度,新興的Chiplet技術可以有效降低封裝內CPU和GPGPU緊耦合的設計成本。所以我們也很期待新的應用需求和封裝技術可以使能未來的融合CPU-GPGPU芯片。” 李兆石在采訪中講到。
聲明:本文由電子發燒友原創,轉載請注明以上來源。如需入群交流,請添加微信elecfans999,投稿爆料采訪需求,請發郵箱huangjingjing@elecfans.com。
編輯:jq
-
芯片
+關注
關注
453文章
50406瀏覽量
421833 -
3D
+關注
關注
9文章
2863瀏覽量
107328 -
cpu
+關注
關注
68文章
10825瀏覽量
211150 -
gpu
+關注
關注
28文章
4701瀏覽量
128705
原文標題:國產高性能GPGPU的破局點是什么?
文章出處:【微信號:elecfans,微信公眾號:電子發燒友網】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論