本文來自微信公眾號(hào)“半導(dǎo)體行業(yè)觀察”,作者/作者Nick Evanson。
三十年前,CPU和其他專用處理器幾乎處理所有計(jì)算任務(wù)。那個(gè)時(shí)代的顯卡有助于加快Windows和應(yīng)用程序中2D形狀的繪制速度,但絕對(duì)沒有其他作用??爝M(jìn)到今天,GPU現(xiàn)已成為整個(gè)行業(yè)最具主導(dǎo)地位的芯片之一。
具有諷刺意味的是,圖形芯片硬件的唯一功能的日子已經(jīng)一去不復(fù)返了,圖形高性能計(jì)算和機(jī)器學(xué)習(xí)在很大程度上依賴于不起眼的GPU的處理能力。與我們一起探索這款單芯片如何從一個(gè)不起眼的像素推動(dòng)器演變成一個(gè)強(qiáng)大的浮點(diǎn)計(jì)算引擎。
01
一開始CPU統(tǒng)治一切
讓我們首先回到20世紀(jì)90年代末。高性能計(jì)算領(lǐng)域,無論是使用超級(jí)計(jì)算機(jī)進(jìn)行科學(xué)研究、標(biāo)準(zhǔn)服務(wù)器上的數(shù)據(jù)處理,還是工作站上的工程和設(shè)計(jì)任務(wù),都完全依賴于兩種類型的CPU:為單一目的而構(gòu)建的專用處理器或現(xiàn)成的處理器,AMD、IBM或Intel的貨架芯片。
以ASCI RED為例。1997年,它是最強(qiáng)大的超級(jí)計(jì)算機(jī)之一,由9,632個(gè)Intel Pentium II Overdrive CPU組成(下圖)。每個(gè)單元的運(yùn)行頻率為333 MHz,該系統(tǒng)的理論峰值計(jì)算性能略高于3.2 TFLOPS(每秒萬億次浮點(diǎn)運(yùn)算)。
由于我們將在本文中經(jīng)常提到這個(gè)指標(biāo),因此值得花點(diǎn)時(shí)間來解釋它的含義。在計(jì)算機(jī)科學(xué)中,浮點(diǎn)數(shù)(或簡稱浮點(diǎn)數(shù))是表示非整數(shù)值的數(shù)據(jù)值,例如6.2815或0.0044。整數(shù)值(稱為整數(shù))經(jīng)常用于控制計(jì)算機(jī)及其上運(yùn)行的任何軟件所需的計(jì)算。
浮點(diǎn)數(shù)對(duì)于精度至關(guān)重要的情況至關(guān)重要-特別是與科學(xué)或工程相關(guān)的任何事情。即使是簡單的計(jì)算,例如確定圓的周長,也至少涉及一個(gè)浮點(diǎn)值。
幾十年來,CPU一直擁有單獨(dú)的電路來對(duì)整數(shù)和浮點(diǎn)數(shù)執(zhí)行邏輯運(yùn)算。在上述Pentium II Overdrive的情況下,它可以在每個(gè)時(shí)鐘周期執(zhí)行一次基本浮點(diǎn)運(yùn)算(乘法或加法)。理論上,這就是為什么ASCI Red的峰值浮點(diǎn)性能為9,632個(gè)CPU x 3.33億個(gè)時(shí)鐘周期x 1次操作/周期=3,207,456百萬次FLOPS。
這些數(shù)字是基于理想條件(例如,對(duì)易于放入高速緩存的數(shù)據(jù)使用最簡單的指令)預(yù)測(cè)的,并且在現(xiàn)實(shí)生活中很少實(shí)現(xiàn)。然而,它們可以很好地表明系統(tǒng)的功率。
其他超級(jí)計(jì)算機(jī)也擁有類似數(shù)量的標(biāo)準(zhǔn)處理器——勞倫斯利弗莫爾國家實(shí)驗(yàn)室的Blue Pacific使用了5808個(gè)IBM PowerPC 604e芯片,洛斯阿拉莫斯國家實(shí)驗(yàn)室的Blue Mountain(上圖)則使用了6144個(gè)MIPS Technologies R1000。
為了達(dá)到萬億次浮點(diǎn)運(yùn)算級(jí)別的處理能力,需要數(shù)千個(gè)CPU,所有這些都需要大量RAM和硬盤存儲(chǔ)的支持。過去是這樣,現(xiàn)在仍然是,這一切歸因于機(jī)器的數(shù)學(xué)要求。當(dāng)我們?cè)趯W(xué)校第一次接觸物理、化學(xué)和其他學(xué)科的方程時(shí),一切都是一維的。換句話說,我們使用一個(gè)數(shù)字來表示距離、速度、質(zhì)量、時(shí)間等。
然而,為了準(zhǔn)確地建模和模擬現(xiàn)象,需要更多的維度,并且數(shù)學(xué)上升到向量、矩陣和張量的領(lǐng)域。它們?cè)跀?shù)學(xué)中被視為單個(gè)實(shí)體,但包含多個(gè)值,這意味著任何進(jìn)行計(jì)算的計(jì)算機(jī)都需要同時(shí)處理大量數(shù)字。鑒于當(dāng)時(shí)的CPU每個(gè)周期只能處理一到兩個(gè)浮點(diǎn)數(shù),因此需要數(shù)千個(gè)浮點(diǎn)數(shù)。
02
SIMD加入競爭:MMX、3DNow!和SSE
1997年,英特爾使用一種名為MMX的技術(shù)更新了其最初的奔騰系列CPU,這是一組利用內(nèi)核內(nèi)八個(gè)附加寄存器的指令。每個(gè)都被設(shè)計(jì)為存儲(chǔ)一到四個(gè)整數(shù)值。該系統(tǒng)允許處理器同時(shí)執(zhí)行跨多個(gè)數(shù)字的一條指令,這種方法更被稱為SIMD(單指令、多數(shù)據(jù))。
一年后,AMD推出了自己的版本,稱為3DNow!。它的性能尤其優(yōu)越,因?yàn)榧拇嫫骺梢源鎯?chǔ)浮點(diǎn)值。又過了一年,英特爾才在MMX中解決這個(gè)問題,并在其Pentium III芯片中引入了SSE(流SIMD擴(kuò)展)。
首次出現(xiàn)在AMD K6-2 CPU中的3D Now
隨著日歷進(jìn)入新千年,高性能計(jì)算機(jī)的設(shè)計(jì)者可以使用能夠有效處理矢量數(shù)學(xué)的標(biāo)準(zhǔn)處理器。一旦擴(kuò)展到數(shù)千個(gè),這些處理器就可以同樣出色地管理矩陣和張量。盡管取得了這一進(jìn)步,超級(jí)計(jì)算機(jī)世界仍然青睞舊的或?qū)S玫男酒?,因?yàn)檫@些新的擴(kuò)展并不是專門為此類任務(wù)而設(shè)計(jì)的。
對(duì)于另一種快速普及的處理器(GPU)來說也是如此,它比AMD或英特爾的任何CPU都更擅長SIMD工作。
在圖形處理器的早期,CPU處理組成場(chǎng)景的三角形的計(jì)算(因此AMD為其SIMD技術(shù)使用這個(gè)名稱)。然而,像素的著色和紋理完全由GPU處理,并且這項(xiàng)工作的許多方面都涉及矢量數(shù)學(xué)。
20多年前最好的消費(fèi)級(jí)顯卡,例如3dfx的Voodoo5 5500和Nvidia的GeForce 2 Ultra,都是出色的SIMD設(shè)備。然而,它們的創(chuàng)建目的是為游戲生成3D圖形,而不是其他任何東西。即使是專業(yè)市場(chǎng)的顯卡也只專注于渲染。
ATI售價(jià)2,000美元的ATI FireGL 3配備了兩個(gè)IBM芯片(一個(gè)GT1000幾何引擎和一個(gè)RC1000光柵器)、一個(gè)巨大的128 MB DDR-SDRAM以及據(jù)稱30 GFLOPS的處理能力。但這一切都是為了使用OpenGL渲染API加速3D Studio Max和AutoCAD等程序中的圖形。
那個(gè)時(shí)代的GPU無法用于其他用途,因?yàn)檗D(zhuǎn)換3D對(duì)象并將其轉(zhuǎn)換為監(jiān)視器圖像的過程并不涉及大量的浮點(diǎn)數(shù)學(xué)。事實(shí)上,其中很大一部分是在整數(shù)級(jí)別,并且圖形卡需要幾年的時(shí)間才能開始在整個(gè)管道中大量使用浮點(diǎn)值。
第一個(gè)是ATI的R300處理器,它有8個(gè)獨(dú)立的像素管道,以24位浮點(diǎn)精度處理所有數(shù)學(xué)運(yùn)算。不幸的是,除了圖形之外,沒有其他方法可以利用這種能力——硬件和相關(guān)軟件完全以圖像為中心。
計(jì)算機(jī)工程師并沒有忘記GPU擁有大量SIMD功能,但缺乏將其應(yīng)用到其他領(lǐng)域的方法這一事實(shí)。令人驚訝的是,這是一個(gè)游戲機(jī),展示了如何解決這個(gè)棘手的問題。
03
統(tǒng)一的新時(shí)代
2005年11月,微軟的Xbox 360上市,其CPU由IBM基于其標(biāo)準(zhǔn)PowerPC架構(gòu)設(shè)計(jì)和制造,GPU由ATI設(shè)計(jì)、TMSC制造。這款代號(hào)為Xenos的圖形芯片很特別,因?yàn)樗牟季滞耆荛_了單獨(dú)的頂點(diǎn)和像素管道的經(jīng)典方法。
取而代之的是一個(gè)三路SIMD陣列集群。具體來說,每個(gè)集群由16個(gè)向量處理器組成,每個(gè)向量處理器包含5個(gè)數(shù)學(xué)單元。這種布局使每個(gè)陣列能夠在每個(gè)周期對(duì)80個(gè)浮點(diǎn)數(shù)據(jù)值同時(shí)執(zhí)行來自線程的兩條順序指令。
這被稱為統(tǒng)一著色器架構(gòu),每個(gè)陣列可以處理任何類型的著色器。盡管Xenos使芯片的其他方面變得更加復(fù)雜,但它引發(fā)了一種至今仍在使用的設(shè)計(jì)范例。
在時(shí)鐘速度為500 MHz的情況下,整個(gè)集群理論上可以為乘法加法命令的三個(gè)線程實(shí)現(xiàn)240 GFLOPS(500 x 16 x 80 x 2)的處理速率。這個(gè)數(shù)字有一定的規(guī)模感,作為對(duì)比,十年前的一些世界頂級(jí)超級(jí)計(jì)算機(jī)甚至無法匹敵這個(gè)速度。
例如,桑迪亞國家實(shí)驗(yàn)室的aragon XP/S140配備3,680個(gè)Intel i860 CPU,峰值速度為184 GFLOPS。到1995年,這臺(tái)機(jī)器已經(jīng)有幾年歷史了,芯片開發(fā)的速度很快就超過了它,但GPU也是如此。
CPU多年來一直在整合自己的SIMD陣列,例如,英特爾最初的Pentium MMX有一個(gè)專用單元,用于在向量上執(zhí)行指令,最多包含8個(gè)8位整數(shù)。當(dāng)Xenos在世界各地的家庭中使用時(shí),此類裝置的尺寸至少增加了一倍,但與Xenos相比,它們?nèi)匀缓苄 ?/p>
消費(fèi)級(jí)顯卡開始采用具有統(tǒng)一著色器架構(gòu)的GPU時(shí),它們已經(jīng)擁有比Xbox 360的圖形芯片明顯更高的處理速率。2006年GeForce 8800 GTX中使用的Nvidia G80(上圖)的理論峰值為346 GLFOPS,而2007年Radeon HD 2900 XT中使用的ATI R600則擁有476 GLFOPS。
兩家制造商很快就在其專業(yè)模型中利用了這種計(jì)算能力。雖然價(jià)格過高,但ATI的FireGL V8650和Nvidia的Tesla C870非常適合高端科學(xué)計(jì)算機(jī)。然而,在最高級(jí)別上,全球超級(jí)計(jì)算機(jī)仍然僅依賴標(biāo)準(zhǔn)CPU。事實(shí)上,幾年后GPU才開始出現(xiàn)在最強(qiáng)大的系統(tǒng)中。
那么,當(dāng)它們明顯提供了巨大的處理速度時(shí),為什么不立即使用它們呢?
首先,超級(jí)計(jì)算機(jī)和類似系統(tǒng)的設(shè)計(jì)、建造和操作都極其昂貴。多年來,它們都是圍繞大量CPU陣列構(gòu)建的,因此集成另一個(gè)處理器并不是一朝一夕的事。此類系統(tǒng)在增加芯片數(shù)量之前需要進(jìn)行徹底的規(guī)劃和初始小規(guī)模測(cè)試。
其次,讓所有這些組件協(xié)調(diào)運(yùn)行,尤其是軟件方面,絕非易事,這也是當(dāng)時(shí)GPU的一個(gè)重大弱點(diǎn)。雖然它們已經(jīng)變得高度可編程,但以前可供它們使用的軟件相當(dāng)有限。
Microsoft的HLSL(高級(jí)著色器語言)、Nvidia的Cg庫和OpenGL的GLSL使訪問圖形芯片的處理能力變得簡單,盡管純粹是為了渲染。
統(tǒng)一著色器架構(gòu)GPU改變了這一切。2006年,ATI(當(dāng)時(shí)是AMD的子公司)和Nvidia發(fā)布了軟件工具包,旨在將這種能力不僅僅用于圖形,其API分別稱為CTM(Close To Metal)和CUDA(Compute Unified Device Architecture)。
然而,科學(xué)和數(shù)據(jù)處理社區(qū)真正需要的是一個(gè)全面的軟件包,它將大量的CPU和GPU(通常稱為異構(gòu)平臺(tái))視為由眾多計(jì)算設(shè)備組成的單個(gè)實(shí)體。
2009年,他們的需求得到了滿足。OpenCL最初由Apple開發(fā),由Khronos Group(幾年前吸收了OpenGL)發(fā)布,成為在日常圖形之外使用GPU的事實(shí)上的軟件平臺(tái),或者該領(lǐng)域當(dāng)時(shí)被稱為GPGPU(通用GPU上的計(jì)算,Mark Harris創(chuàng)造的術(shù)語)。
04
GPU進(jìn)入計(jì)算競賽
與廣闊的技術(shù)評(píng)論世界不同,全球范圍內(nèi)并沒有數(shù)百名評(píng)論者測(cè)試超級(jí)計(jì)算機(jī)的性能主張。然而,德國曼海姆大學(xué)于20世紀(jì)90年代初啟動(dòng)的一個(gè)正在進(jìn)行的項(xiàng)目正是致力于實(shí)現(xiàn)這一目標(biāo)。該組織被稱為“TOP500”,每年兩次發(fā)布全球最強(qiáng)大的10臺(tái)超級(jí)計(jì)算機(jī)排行榜。
第一個(gè)夸耀GPU的條目出現(xiàn)在2010年,中國有兩個(gè)系統(tǒng)——星云和天河一號(hào)。他們分別使用Nvidia的Tesla C2050(本質(zhì)上是GeForce GTX 470,如下)和AMD的Radeon HD 4870卡,前者的理論峰值為2,984 TFLOPS。
在高端GPGPU的早期階段,Nvidia是為計(jì)算巨頭配備的首選供應(yīng)商,不是因?yàn)樾阅埽ˋMD的Radeon卡通常提供更高程度的處理性能),而是因?yàn)檐浖С?。CUDA經(jīng)歷了快速發(fā)展,幾年后AMD才找到合適的替代方案,鼓勵(lì)用戶改用OpenCL。
然而,英偉達(dá)并沒有完全主導(dǎo)市場(chǎng),英特爾的至強(qiáng)融核處理器試圖占據(jù)一席之地。這些大型芯片源自一個(gè)名為Larrabee的已中止的GPU項(xiàng)目,是一種特殊的CPU-GPU混合體,由多個(gè)類似奔騰的核心(CPU部分)與大型浮點(diǎn)單元(GPU部分)配對(duì)組成。
對(duì)Tesla C2050內(nèi)部結(jié)構(gòu)的檢查揭示了14個(gè)稱為流式多處理器(SM)的塊,由緩存和中央控制器劃分。每一個(gè)都包含32組兩個(gè)邏輯電路(Nvidia將其標(biāo)記為CUDA核心),用于執(zhí)行所有數(shù)學(xué)運(yùn)算-一組用于整數(shù)值,另一組用于浮點(diǎn)數(shù)。在后一種情況下,內(nèi)核可以在每個(gè)時(shí)鐘周期以單(32位)精度管理一次FMA(融合乘加)操作;雙精度(64位)運(yùn)算至少需要兩個(gè)時(shí)鐘周期。
Xeon Phi芯片(下圖)中的浮點(diǎn)單元看起來有些相似,只是每個(gè)內(nèi)核處理的數(shù)據(jù)值只有C2050中SM的一半。盡管如此,由于與Tesla的14個(gè)重復(fù)核心相比,有32個(gè)重復(fù)核心,單個(gè)Xeon Phi處理器總體上每個(gè)時(shí)鐘周期可以處理更多的值。然而,英特爾首次發(fā)布的該芯片更多的是原型機(jī),無法充分發(fā)揮其潛力——英偉達(dá)的產(chǎn)品運(yùn)行速度更快,功耗更低,并被證明是一款卓越的產(chǎn)品。
這將成為AMD、英特爾和Nvidia之間三路GPGPU之爭中反復(fù)出現(xiàn)的主題。一種型號(hào)可能擁有數(shù)量較多的處理核心,而另一種型號(hào)可能具有更快的時(shí)鐘速度或更強(qiáng)大的緩存系統(tǒng)。
CPU對(duì)于所有類型的計(jì)算仍然至關(guān)重要,許多超級(jí)計(jì)算機(jī)和高端計(jì)算系統(tǒng)仍然由AMD或英特爾處理器組成。雖然單個(gè)CPU無法與普通GPU的SIMD性能競爭,但當(dāng)數(shù)千個(gè)CPU連接在一起時(shí),它們就證明足夠了。然而,此類系統(tǒng)缺乏功效。
例如,在天河一號(hào)使用Radeon HD 4870卡的同時(shí),AMD最大的服務(wù)器CPU(12核Opteron 6176 SE)也開始流行。對(duì)于140 W左右的功耗,CPU理論上可以達(dá)到220 GFLOPS,而上述GPU的峰值性能可達(dá)到1,200 GFLOPS,僅多出10 W,而且成本僅為其一小部分。
05
不再“只是”顯卡
到了2013年,不僅僅是世界上的超級(jí)計(jì)算機(jī)在集體利用GPU的能力進(jìn)行并行計(jì)算。Nvidia正在積極推廣其GRID平臺(tái),這是一種用于科學(xué)和其他應(yīng)用的GPU虛擬化服務(wù)。最初是作為托管基于云的游戲的系統(tǒng)而推出的,對(duì)大規(guī)模、經(jīng)濟(jì)實(shí)惠的GPGPU不斷增長的需求使得這一轉(zhuǎn)變不可避免。在其年度技術(shù)會(huì)議上,GRID被認(rèn)為是各領(lǐng)域工程師的重要工具。
在同一事件中,GPU公司展示了代號(hào)為Volta的未來架構(gòu)。然而,公布的細(xì)節(jié)很少,普遍的假設(shè)是這將是另一款服務(wù)于Nvidia所有市場(chǎng)的芯片。
與此同時(shí),AMD也在做類似的事情,在其專注于游戲的Radeon系列以及FirePro和Radeon Sky服務(wù)器卡中利用定期更新的Graphics Core Next(GCN)設(shè)計(jì)。那時(shí),性能數(shù)據(jù)已經(jīng)令人震驚——FirePro W9100的峰值FP32(32位浮點(diǎn))吞吐量為5.2 TFLOPS,這個(gè)數(shù)字對(duì)于不到二十年前的超級(jí)計(jì)算機(jī)來說是不可想象的。
當(dāng)然,GPU仍然主要是為3D圖形而設(shè)計(jì)的,但渲染技術(shù)的進(jìn)步意味著這些芯片必須越來越擅長處理一般計(jì)算工作負(fù)載。唯一的問題是它們執(zhí)行高精度浮點(diǎn)數(shù)學(xué)(即FP64或更高)的能力有限。縱觀2015年頂級(jí)超級(jí)計(jì)算機(jī),與完全基于CPU的超級(jí)計(jì)算機(jī)相比,使用GPU(英特爾的Xeon Phi或Nvidia的Tesla)的數(shù)量相對(duì)較少。
當(dāng)Nvidia在2016年推出Pascal架構(gòu)時(shí),一切都發(fā)生了變化。這是該公司首次嘗試專門為高性能計(jì)算市場(chǎng)設(shè)計(jì)GPU,其他GPU則用于多個(gè)領(lǐng)域。前者只生產(chǎn)過一款(GP100),并且只產(chǎn)生了5種產(chǎn)品,但之前所有架構(gòu)都只配備少數(shù)FP64內(nèi)核,而這款芯片卻容納了近2,000個(gè)內(nèi)核。
Tesla P100提供超過9 TFLOPS的FP32處理能力以及FP64處理能力的一半,其功能非常強(qiáng)大。AMD的Radeon Pro W9100使用其Vega 10芯片,在FP32中速度快了30%,但在FP64中慢了800%。此時(shí),英特爾因銷售不佳而瀕臨停產(chǎn)Xeon Phi系列。
一年后,Nvidia終于發(fā)布了Volta,這表明該公司不僅僅對(duì)將其GPU引入HPC和數(shù)據(jù)處理市場(chǎng)感興趣,它還瞄準(zhǔn)了另一個(gè)市場(chǎng)。
06
神經(jīng)元、網(wǎng)絡(luò)
深度學(xué)習(xí)是統(tǒng)稱為機(jī)器學(xué)習(xí)的更廣泛學(xué)科中的一個(gè)領(lǐng)域,機(jī)器學(xué)習(xí)本身是人工智能的一個(gè)子集。它涉及使用稱為神經(jīng)網(wǎng)絡(luò)的復(fù)雜數(shù)學(xué)模型,從給定數(shù)據(jù)中提取信息,例如確定所呈現(xiàn)的圖像描繪特定動(dòng)物的概率。為此,模型需要進(jìn)行“訓(xùn)練”——在本例中,顯示了數(shù)百萬張?jiān)搫?dòng)物的圖像,以及數(shù)百萬張不顯示該動(dòng)物的圖像。
所涉及的數(shù)學(xué)植根于矩陣和張量計(jì)算。幾十年來,此類工作負(fù)載只適合基于CPU的大型超級(jí)計(jì)算機(jī)。然而,早在2000年代,GPU就顯然非常適合此類任務(wù)。
盡管如此,英偉達(dá)還是押注于深度學(xué)習(xí)市場(chǎng)的大幅擴(kuò)張,并在其Volta架構(gòu)中添加了額外的功能,使其在該領(lǐng)域脫穎而出。這些是作為張量核心銷售的FP16邏輯單元組,作為一個(gè)大型陣列一起運(yùn)行,但功能非常有限。
事實(shí)上,它們只執(zhí)行一項(xiàng)功能——將兩個(gè)FP16 4x4矩陣相乘,然后將另一個(gè)FP16或FP32 4x4矩陣與該結(jié)果相加(這一過程稱為GEMM運(yùn)算)。Nvidia之前的GPU以及競爭對(duì)手的GPU也可以執(zhí)行此類計(jì)算,但速度遠(yuǎn)不及Volta。GV100是唯一使用該架構(gòu)制造的GPU,總共包含512個(gè)張量核心,每個(gè)核心能夠在每個(gè)時(shí)鐘周期執(zhí)行64個(gè)GEMM。
根據(jù)數(shù)據(jù)集中矩陣的大小以及所使用的浮點(diǎn)大小,Tesla V100卡在這些張量計(jì)算中理論上可以達(dá)到125 TFLOPS。Volta顯然是為小眾市場(chǎng)設(shè)計(jì)的,但GP100在超級(jí)計(jì)算機(jī)領(lǐng)域的進(jìn)軍有限,而新的Tesla型號(hào)則迅速被采用。
PC游戲愛好者會(huì)知道,Nvidia隨后在隨后的圖靈架構(gòu)中將張量核心添加到其通用消費(fèi)產(chǎn)品中,并開發(fā)了一種稱為深度學(xué)習(xí)超級(jí)采樣(DLSS)的升級(jí)技術(shù)。最新版本使用GPU中的核心在放大圖像上運(yùn)行神經(jīng)網(wǎng)絡(luò),糾正幀中的任何偽影。
在短時(shí)間內(nèi),Nvidia獨(dú)占了GPU加速的深度學(xué)習(xí)市場(chǎng),其數(shù)據(jù)中心部門的收入大幅增長——2017財(cái)年增長率為145%,2018財(cái)年增長率為133%,2019財(cái)年增長率為52%。截至2019財(cái)年末,HPC、深度學(xué)習(xí)等領(lǐng)域的銷售額總計(jì)29億美元。
然而,只要有錢,競爭就不可避免。2018年,谷歌開始通過云服務(wù)提供對(duì)其內(nèi)部開發(fā)的張量處理芯片的訪問。亞馬遜很快也緊隨其后,推出了專用CPU AWS Graviton。與此同時(shí),AMD正在重組其GPU部門,形成兩條不同的產(chǎn)品線:一條主要用于游戲(RDNA),另一條專門用于計(jì)算(CDNA)。
雖然RDNA與其前身明顯不同,但CDNA在很大程度上是GCN的自然演變,盡管規(guī)模擴(kuò)大到了一個(gè)巨大的水平??纯串?dāng)今用于超級(jí)計(jì)算機(jī)、數(shù)據(jù)服務(wù)器和人工智能機(jī)器的GPU,一切都非常巨大。
AMD的CDNA 2驅(qū)動(dòng)的MI250X擁有220個(gè)計(jì)算單元,提供略低于48 TFLOPS的雙精度FP64吞吐量和128 GB的高帶寬內(nèi)存(HBM2e),這兩個(gè)方面在HPC應(yīng)用中都備受追捧。Nvidia的GH100芯片采用Hopper架構(gòu)和576個(gè)Tensor Core,有可能達(dá)到4000 TOPS,在AI矩陣計(jì)算中采用低精度INT8數(shù)字格式。
英特爾的Ponte Vecchio GPU同樣龐大,擁有1000億個(gè)晶體管,AMD即將推出的MI300擁有460億個(gè)晶體管,包括多個(gè)CPU、顯卡和內(nèi)存小芯片。
然而,它們共有的一件事是它們絕對(duì)不是GPU:它們不是GPU。早在英偉達(dá)將該術(shù)語用作營銷工具之前,該縮寫詞就代表圖形處理單元。AMD的MI250X沒有任何渲染輸出單元(ROP),甚至GH100也只擁有類似于GeForce GTX 1050的Direct3D性能,使得GPU中的“G”變得無關(guān)緊要。
那么,我們可以稱呼它們什么呢?“GPGPU”并不理想,因?yàn)樗且粋€(gè)笨拙的短語,指的是在通用計(jì)算中使用GPU,而不是設(shè)備本身。“HPCU”(高性能計(jì)算單元)也好不了多少。但也許這并不重要。畢竟,“CPU”一詞非常廣泛,涵蓋了各種不同的處理器和用途。
07
GPU接下來要征服什么?
AMD、英特爾、Nvidia和其他數(shù)十家公司在GPU研發(fā)上投入了數(shù)十億美元,當(dāng)今的圖形處理器不會(huì)很快被任何截然不同的產(chǎn)品所取代。對(duì)于渲染,最新的API和使用它們的軟件包(例如游戲引擎和CAD應(yīng)用程序)通常與運(yùn)行代碼的硬件無關(guān),因此從理論上講,它們可以適應(yīng)全新的東西。
然而,GPU中專門用于圖形的組件相對(duì)較少-三角形設(shè)置引擎和ROP是最明顯的組件,并且最近版本中的光線追蹤單元也高度專業(yè)化。然而,其余部分本質(zhì)上是大規(guī)模并行SIMD芯片,由強(qiáng)大而復(fù)雜的內(nèi)存/緩存系統(tǒng)支持。
基本設(shè)計(jì)與以往一樣好,未來的任何改進(jìn)都與半導(dǎo)體制造技術(shù)的進(jìn)步緊密相關(guān)。換句話說,它們只能通過容納更多邏輯單元、以更高的時(shí)鐘速度運(yùn)行或兩者的組合來改進(jìn)。
當(dāng)然,它們可以合并新功能,使其能夠在更廣泛的場(chǎng)景中發(fā)揮作用。在GPU的歷史上,這種情況已經(jīng)發(fā)生過好幾次,不過向統(tǒng)一著色器架構(gòu)的過渡尤為重要。雖然最好有專用硬件來處理張量或光線追蹤計(jì)算,但現(xiàn)代GPU的核心能夠管理這一切,盡管速度較慢。
這就是為什么MI250和GH100等產(chǎn)品與臺(tái)式電腦的同類產(chǎn)品非常相似,未來用于HPC和AI的設(shè)計(jì)很可能會(huì)遵循這一趨勢(shì)。那么,如果芯片本身不會(huì)發(fā)生重大變化,那么它們的應(yīng)用又如何呢?
鑒于與AI相關(guān)的任何事物本質(zhì)上都是計(jì)算的一個(gè)分支,因此只要需要執(zhí)行大量SIMD計(jì)算,就可能會(huì)使用GPU。雖然科學(xué)和工程領(lǐng)域沒有多少領(lǐng)域尚未使用此類處理器,但我們可能會(huì)看到GPU衍生產(chǎn)品的使用激增。
谷歌的Coral加速器板配有兩個(gè)edgeTPU芯片
目前人們可以購買配備微型芯片的手機(jī),其唯一功能是加速張量計(jì)算。隨著ChatGPT等工具的功能和普及度不斷增強(qiáng),我們將看到更多配備此類硬件的設(shè)備。
不起眼的GPU已經(jīng)從僅僅比CPU更快地運(yùn)行游戲的設(shè)備發(fā)展成為通用加速器,為全球的工作站、服務(wù)器和超級(jí)計(jì)算機(jī)提供動(dòng)力。全球數(shù)百萬人每天都在使用它——不僅在我們的計(jì)算機(jī)、電話、電視和流媒體設(shè)備中,而且在我們使用包含語音和圖像識(shí)別或提供音樂和視頻推薦的服務(wù)時(shí)也是如此。
GPU真正的下一步可能是一個(gè)未知的領(lǐng)域,但有一點(diǎn)是肯定的,圖形處理單元將在未來幾十年內(nèi)繼續(xù)成為計(jì)算和人工智能的主要工具。(作者:Nick Evanson半導(dǎo)體行業(yè)觀察)