徐昌宇
專為計(jì)算設(shè)計(jì)——NVIDI A正式發(fā)布A100Tensor Core GPU
NVIDIA進(jìn)入計(jì)算市場(chǎng)是從G80GPU開始的,當(dāng)時(shí)統(tǒng)一渲染架構(gòu)的出現(xiàn)帶給NVIDIA在計(jì)算市場(chǎng)上嶄露頭角的機(jī)會(huì)。隨后的多代處理器產(chǎn)品包括代號(hào)為GT200、費(fèi)米、開普勒、麥克斯韋等架構(gòu)都在努力向計(jì)算市場(chǎng)邁進(jìn),甚至一度稱自己為“視覺計(jì)算”企業(yè)。不過這一切在AI計(jì)算、云計(jì)算興起之后發(fā)生了改變,包括開普勒、麥克斯韋、帕斯卡架構(gòu)的GPU都被廣泛使用在AI的深度學(xué)習(xí)計(jì)算中,再加上數(shù)據(jù)中心和云計(jì)算對(duì)GPU越來越大的需求,NVIDIA在產(chǎn)品路線上開始分裂—一方面要牢牢占據(jù)游戲產(chǎn)品市場(chǎng),另一方面高增長、高利潤的數(shù)據(jù)中心和AI計(jì)算市場(chǎng)也絕對(duì)不能放棄。
這樣一來,NVIDIA的產(chǎn)品路線就分為了計(jì)算和圖形兩個(gè)路徑。我們看到的第一個(gè)更偏向于計(jì)算的GPU產(chǎn)品架構(gòu)是伏打架構(gòu),其典型產(chǎn)品為TeslaV100、TITANV等,在民用圖形卡方面幾乎沒有太多建樹。同代(或者稍晚一些)推出的更偏向于圖形的產(chǎn)品是圖靈架構(gòu),衍生出了多款民用GPU圖形卡,并且?guī)砹薘TX品牌和全新的光線追蹤技術(shù)。值得一提的是,考慮到這款顯卡出色的性能和性價(jià)比,也有不少專業(yè)用戶選擇它進(jìn)行計(jì)算工作,畢竟TITANV昂貴的價(jià)格并不是所有人都可以承受的。從時(shí)間上來看,伏打架構(gòu)和相關(guān)產(chǎn)品發(fā)布于2017年6月,圖靈架構(gòu)和相關(guān)產(chǎn)品發(fā)布于2018年8月,根據(jù)NVIDIA一代計(jì)算產(chǎn)品、一代游戲產(chǎn)品發(fā)布的前例來看的話,剛剛發(fā)布的Ampere(下文全部稱為“安培”)架構(gòu)極大概率會(huì)被定義為計(jì)算產(chǎn)品,和游戲玩家關(guān)系不大。
雖然這一切看起來順理成章,圖形和計(jì)算兩條路并行不悖,但是在今年網(wǎng)絡(luò)發(fā)布會(huì)后的媒體采訪上,NVIDIACEO黃仁勛又提到,安培架構(gòu)和隨后即將推出的圖形加速產(chǎn)品在架構(gòu)上存在“巨大的重疊”,并且將最終替換掉圖靈架構(gòu)和伏打架構(gòu),成為NVIDIA在計(jì)算和圖形市場(chǎng)上的唯一架構(gòu)。實(shí)際上,從現(xiàn)有的安培架構(gòu)的情況來看,現(xiàn)在發(fā)布的產(chǎn)品是徹徹底底針對(duì)計(jì)算市場(chǎng)的,不但大幅度加強(qiáng)了有關(guān)計(jì)算方面的內(nèi)容、加入了大量特殊格式的計(jì)算加速、采用了全新設(shè)計(jì)的張量核心,還加強(qiáng)了雙精度計(jì)算的功能并且沒有提供任何光線追蹤加速的內(nèi)容。這樣一來,未來安培架構(gòu)圖形產(chǎn)品的情況就顯得頗為撲朔迷離了。
當(dāng)然,圖形和計(jì)算,在應(yīng)用端看起來似乎是兩個(gè)路徑,但是在最終GPU中計(jì)算時(shí),都會(huì)轉(zhuǎn)化為數(shù)據(jù)和相應(yīng)的路徑。也有一種可能是安培架構(gòu)本身大幅度加強(qiáng)了計(jì)算效能,這些計(jì)算效能的提升也會(huì)在圖形應(yīng)用中帶來不錯(cuò)的效果,當(dāng)然最終的情況會(huì)怎么樣,還得看后續(xù)產(chǎn)品發(fā)布的相關(guān)內(nèi)容了。
另外值得一提的是,從本代計(jì)算產(chǎn)品開始,NVIDIA首發(fā)產(chǎn)品沒有使用諸如Tesla的商標(biāo),而是直接以NVIDIAA100TensorCoreGPU命名。一些消息顯示,由于NVIDIA旗下的Tesla計(jì)算卡在商標(biāo)問題上和埃隆馬斯克的特斯拉(Tesla)汽車存在一定的重疊和關(guān)聯(lián),因此NVIDIA徹底停用了Tesla品牌。目前在NVIDIA全球網(wǎng)站上,Tesla品牌已經(jīng)徹底消失不見,比如之前的TelsaT4加速卡,目前被改成了NVIDIAT4,其余之前冠之以Tesla品牌的產(chǎn)品現(xiàn)在都改成了NVIDIA品牌。中國官網(wǎng)上,Tesla品牌在部分產(chǎn)品中依舊可見,應(yīng)該是網(wǎng)站信息更新延遲的問題。停用了Tesla品牌之后,新的命名方法顯然是凸顯了NVIDIA在產(chǎn)品中的地位。另外,新產(chǎn)品的全新的命名突出了TensorCore也就是張量核心,這是NVIDIA在伏打架構(gòu)上首次推出的、專門用于加速AI深度學(xué)習(xí)的計(jì)算核心。產(chǎn)品命名中對(duì)張量核心的突出顯示,也表示出這款GPU的用途更偏向于計(jì)算加速而不是傳統(tǒng)的圖形。
架構(gòu)方面,A100使用了最新的安培架構(gòu),NVIDIA宣稱新的架構(gòu)和產(chǎn)品是基于之前的伏打架構(gòu)的TeslaV100(下簡(jiǎn)稱“V100”)的功能構(gòu)建,但增加了大量的新功能,并顯著提高了包括HPC、AI和數(shù)據(jù)分析工作負(fù)載的性能。新的架構(gòu)也能夠?yàn)槭褂脝蜧PU和多GPU組建的工作站、服務(wù)器、群集和云數(shù)據(jù)中心、邊緣計(jì)算系統(tǒng)和超級(jí)計(jì)算機(jī)中運(yùn)行的GPU計(jì)算和深度學(xué)習(xí)應(yīng)用程序提供強(qiáng)大的擴(kuò)扎能力,并且A100支持彈性構(gòu)建、多功能和高吞吐量的數(shù)據(jù)中心??偟膩碚f,作為NVIDIA“三年磨一劍”的全新產(chǎn)品,A100和安培架構(gòu)引入了大量的新功能和特性,值得一一道來。
安培架構(gòu)的具象——GA100芯片的工藝和成本
任何一個(gè)產(chǎn)品架構(gòu)最終都必須依托于某個(gè)具體產(chǎn)品才存在現(xiàn)實(shí)意義。在這一點(diǎn)上,安培架構(gòu)的芯片產(chǎn)物是GA100GPU,對(duì)應(yīng)的成品被稱為A100TensorCoreGPU。
GA100GPU是現(xiàn)有民用產(chǎn)品中晶體管數(shù)量最多、計(jì)算能最強(qiáng)大的單個(gè)完整芯片。工藝方面,GA100GPU采用的是臺(tái)積電的7nm工藝。整個(gè)GA100GPU中包含了542億個(gè)晶體管,封裝面積為826平方毫米,每平方毫米晶體管數(shù)量約0.656億個(gè),即65.6MTr/平方毫米。
從數(shù)據(jù)來看,7N工藝的晶體管密度數(shù)據(jù)極為接近臺(tái)積電7nmHP工藝的65MTr/平方毫米。7nmHP工藝的其他的參數(shù)還包括金屬層76nm、鰭片高度為30nm、柵極間距為64nm、采用了7.5T庫等。從臺(tái)積電的相關(guān)信息來看,7nmHP工藝是專門面向高性能計(jì)算、高頻率處理器的工藝,其優(yōu)勢(shì)在于出色的電氣性能和能達(dá)到較高的頻率,劣勢(shì)則在于,相比同期推出的、采用6T庫的臺(tái)積電7nmHD工藝,7nmHP工藝密度比較低。7nmHD工藝密度可達(dá)91.2Mtr/平方毫米,相比7nmHP大了約50%,屬于成本優(yōu)先的選擇。使用7nmHD工藝制造的產(chǎn)品就有大名鼎鼎的AMDZen2架構(gòu)的計(jì)算核心,目前來看其性能和成本得到了很好的平衡。NVIDIA在這里選擇了7nmHP工藝,應(yīng)該是綜合考慮了GA100GPU的目標(biāo)市場(chǎng)對(duì)成本不敏感、大型計(jì)算設(shè)備的采購預(yù)算往往比較高等原因,簡(jiǎn)單來說就是市場(chǎng)優(yōu)先。
A100GPU的首個(gè)亮點(diǎn)就是全新的第三代張量核心,相比V100,新的張量核心大幅度提升了數(shù)據(jù)吞吐量,還增加了全新的多種專用于深度學(xué)習(xí)和HPC數(shù)據(jù)類型的支持,以及加強(qiáng)的稀疏計(jì)算增強(qiáng)功能。
根據(jù)NVIDIA給出的示意圖,一個(gè)完整的SM單元包含了一個(gè)共享的L1指令緩存和四個(gè)計(jì)算模塊。每個(gè)計(jì)算模塊的都擁有自己的L0指令緩存、每周期可以發(fā)送32個(gè)線程的Warp排序單元、每周期32個(gè)線程的調(diào)度單元、16384x32bit的寄存器以及后端的LD/ST單元、特殊功能單元(SpecialFunctionUnit,簡(jiǎn)稱SFU)。除了這些功能單元外,每個(gè)計(jì)算模塊中最重要的部分自然是計(jì)算單元了。每個(gè)計(jì)算模塊擁有16個(gè)INT32單元、16個(gè)FP32單元、8個(gè)FP64單元以及1個(gè)第三代張量核心。最終1個(gè)完整的SM單元包含了64個(gè)INT32單元、16個(gè)FP32單元(也就是CUDA核心)以及32個(gè)FP64單元、4個(gè)第三代張量核心。在整個(gè)SM單元的后端,NVIDIA還布置了192KB的L1數(shù)據(jù)緩存或者共享緩存,4個(gè)Tex單元。值得注意的是,相比之前伏打架構(gòu)的SM單元,安培架構(gòu)的SM單元中,張量核心的數(shù)量只有4個(gè),但是前代伏打架構(gòu)和圖靈架構(gòu)的每SM均有8個(gè)。不過由于新的第三代張量核心使用了全新的設(shè)計(jì),其計(jì)算能力反而大幅度提升。
安培架構(gòu)SM單元的特性總結(jié)
1.全新的第三代張量核心
★ 全新的第三代張量核心現(xiàn)在可以加速所有類型的數(shù)據(jù),無論是FP16、BF16、TF32、FP64、INT8、INT4還是二進(jìn)制數(shù)據(jù),都能夠使用第三代張量核心進(jìn)行加速。
★ 第三代張量核心新加入可以利用深度學(xué)習(xí)網(wǎng)絡(luò)中的細(xì)粒度結(jié)構(gòu)稀疏性和新加入的稀疏功能,使得標(biāo)準(zhǔn)張量核心的操作的性能翻倍。
★ 安培架構(gòu)中的張量核心在計(jì)算TF32數(shù)據(jù)時(shí),可以通過特有的路徑來加速深度學(xué)習(xí)框架和H P C計(jì)算中FP32的輸入輸出數(shù)據(jù),這種計(jì)算比之前的伏打架構(gòu)的V100 FP32 FMA操作快10倍,如果原始數(shù)據(jù)有稀疏性,那么可以快20倍。
★ 在操作混合精度的F P16和FP32的深度學(xué)習(xí)計(jì)算時(shí),安培架構(gòu)的第三代張量核心運(yùn)行速度比之前的伏打架構(gòu)的V100的張量核心快了2.5倍,如果原始數(shù)據(jù)具有稀疏性那么可以提高至5倍。
★ BF16/FP32混合精度操作和常見的FP16/FP32混合精度速度一樣。
★ 第三代張量核心能夠進(jìn)行FP64操作,在HPC計(jì)算中比較常見,其速度是伏打架構(gòu)的V100 FP64 DFMA操作的2.5倍。
★ 第三代張量核心在計(jì)算擁有稀疏性的INT8數(shù)據(jù)時(shí),其速度是伏打架構(gòu)V100 INT8操作的20倍。
2.加大的L1數(shù)據(jù)緩存/共享緩存,容量是伏打架構(gòu)的1.5倍。
3.新的異步復(fù)制指令支持將數(shù)據(jù)直接從全局存儲(chǔ)器加載至共享存儲(chǔ)器中,可以繞過L1高速緩存且不需要使用中間寄存器文件。
4 .和異步復(fù)制指令一起使用的、基于共享內(nèi)存的新的異步屏障單元。
5.L2緩存管理和駐留控制得到了改善。
6.CUDA組支持新的warp-level降低指令。
7.可編程性的改進(jìn)。
NVIDIA還給出了一些對(duì)比用于比較新的第三代張量核心和安培架構(gòu)在數(shù)據(jù)處理方面相比之前的伏打架構(gòu)的優(yōu)勢(shì)。比如FP16、FP32、FP64和INT8稀疏操作等。其中,A100 GPU相比V100在上述操作中獲得了5倍、20倍、2.5倍和20倍的性能優(yōu)勢(shì)。
在FT32數(shù)據(jù)格式方面,NVIDIA進(jìn)一步解釋道,目前AI訓(xùn)練方面默認(rèn)的數(shù)據(jù)格式是FP32,并且不能進(jìn)行張量核心加速。NVIDIA在安培架構(gòu)上引入了TF32架構(gòu),這樣一來AI訓(xùn)練在默認(rèn)狀態(tài)下就可以使用張量核心加速了,并且不需要用戶手動(dòng)配置,當(dāng)然非張量的操作繼續(xù)使用FP32數(shù)據(jù)路徑進(jìn)行計(jì)算。TF32張量?jī)?nèi)核將讀取FP32數(shù)據(jù)并且使用和FP32相同的范圍,但是內(nèi)部會(huì)處理自動(dòng)降低精度,然后生成標(biāo)準(zhǔn)的IEEEFP32輸出。TF32包含一個(gè)8位指數(shù)(和FP32)相同,10位尾數(shù)(和FP16相同)以及1個(gè)符號(hào)位。NVIDIA反復(fù)強(qiáng)調(diào),張量核心有關(guān)TF32的加速方面,不需要用戶額外付出勞動(dòng)成本,一切都是自動(dòng)的。
在傳統(tǒng)的INT32和FP32操作方面,安培架構(gòu)和A100GPU和之前發(fā)伏打、圖靈架構(gòu)類似,都采用了獨(dú)立的FP32和INT32內(nèi)核,支持以全吞吐量同時(shí)執(zhí)行FP32和INT32操作,并且還提高了指令的吞吐量。另外,對(duì)一些有內(nèi)部循環(huán)的應(yīng)用程序而言,這些循環(huán)可以同時(shí)執(zhí)行指針?biāo)阈g(shù)(整數(shù)存儲(chǔ)器地址計(jì)算)并結(jié)合浮點(diǎn)計(jì)算,這也是FP32和INT32獨(dú)立計(jì)算帶來的優(yōu)勢(shì)之一。在這種計(jì)算中,循環(huán)的每個(gè)迭代都可以更新地址并為下一個(gè)迭代加載數(shù)據(jù),同時(shí)在FP32中計(jì)算現(xiàn)有的數(shù)據(jù),效率顯著提升。
除了有關(guān)深度學(xué)習(xí)計(jì)算加速的內(nèi)容外,在HPC所需要的高精度計(jì)算方面,安培架構(gòu)的第三代張量核心也帶來了出色的效果。目前安培架構(gòu)的第三代張量核心支持符合IEEE標(biāo)準(zhǔn)的FP64計(jì)算,其FP64張量核心計(jì)算性能是之前伏打架構(gòu)V100GPU的2.5倍。在架構(gòu)改進(jìn)上,安培架構(gòu)采用了新的雙精度矩陣乘加指令取代了之前V100上的8條DFMA指令,從而減少了指令提取、調(diào)度的開銷以及寄存器的讀取、數(shù)據(jù)路徑功率和共享存儲(chǔ)器的讀取帶寬等。現(xiàn)在,安培架構(gòu)A100GPU中每個(gè)SM每時(shí)鐘周期可以計(jì)算64個(gè)FP64FMA操作,或者128個(gè)FP64操作,這兩個(gè)數(shù)據(jù)都是V100的2倍。具有108個(gè)SM的A100GPU的雙精度數(shù)據(jù)吞吐量是19.5TFLOPS,這個(gè)數(shù)值達(dá)到了V100的2.5倍。
說道吞吐量,就不得不提及計(jì)算能力了。NVIDIA給出了一張表用于展示不同數(shù)據(jù)格式下新的A100GPU的計(jì)算能力。表中所有的計(jì)算數(shù)據(jù)均基于GPU的峰值頻率。此外,在除了FP64TensorCore計(jì)算之外的所有TensorCore計(jì)算力方面,NVIDIA還分別給出了傳統(tǒng)計(jì)算和加入稀疏性優(yōu)化后的兩種性能數(shù)據(jù),比如INT4TensorCore計(jì)算方面,在不啟用/啟用稀疏性優(yōu)化的情況下,計(jì)算能力分別是1248TOPS和2496TOPS,后者帶來了翻倍的計(jì)算性能。
無論是吞吐量的增加,還是新的數(shù)據(jù)加速格式的支持,都可以用于加速HPC的工作負(fù)載,包括迭代求解器和各種新的AI算法等。
架構(gòu)優(yōu)化:全新引入的細(xì)粒度的結(jié)構(gòu)稀疏性
安培架構(gòu)為AI計(jì)算做出了多樣化的優(yōu)化,在這里,全新引入的細(xì)粒度結(jié)構(gòu)稀疏性就能夠?qū)⑸疃壬窠?jīng)網(wǎng)絡(luò)的吞吐量提高一倍。
在深度學(xué)習(xí)計(jì)算中,稀疏性是可能存在的,因?yàn)樵谏疃葘W(xué)習(xí)的計(jì)算過程中,個(gè)體的權(quán)重在不斷地變化,在最終網(wǎng)絡(luò)訓(xùn)練結(jié)束的時(shí)候,只有一部分權(quán)重能夠體現(xiàn)有意義的價(jià)值,剩余的權(quán)重則失去了意義不再需要。
細(xì)粒度的結(jié)構(gòu)化稀疏性則是對(duì)允許的稀疏性模式增加了約束條件,使得硬件可以更有效對(duì)輸入操作數(shù)進(jìn)行必要的對(duì)齊。由于深度學(xué)習(xí)網(wǎng)絡(luò)能夠根據(jù)訓(xùn)練過程反饋調(diào)整權(quán)重,因此NVIDIA的工程師們發(fā)現(xiàn),一般而言,結(jié)構(gòu)的約束并不會(huì)影響深度學(xué)習(xí)網(wǎng)絡(luò)的準(zhǔn)確性。因此,這使得利用稀疏性對(duì)推理計(jì)算進(jìn)行加速成為可能。
在具體的執(zhí)行中,NVIDIA通過新的2:4稀疏矩陣定義強(qiáng)制性的執(zhí)行結(jié)構(gòu),該定義在每個(gè)四項(xiàng)向量中允許2個(gè)非零的值,A100GPU支持行上2:4的結(jié)構(gòu)化稀疏性。由于矩陣的定義非常明確,因此可以對(duì)其進(jìn)行壓縮,并將內(nèi)存存儲(chǔ)量和帶寬要求減少2倍。
在計(jì)算方面,NVIDIA也開發(fā)了一種簡(jiǎn)單而通用的方法,使用這種2:4的結(jié)構(gòu)稀疏模式對(duì)深層次的神經(jīng)網(wǎng)絡(luò)進(jìn)行稀疏化處理。比如首先使用密集的權(quán)重值對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,然后用細(xì)粒度的結(jié)構(gòu)化“修剪”數(shù)據(jù),最終使用其他訓(xùn)練步驟對(duì)剩余的非零權(quán)重進(jìn)行微調(diào)。在NVIDIA的評(píng)估中,這種方法通過了跨視覺、對(duì)象檢測(cè)、分割、自然語言建模、翻譯等數(shù)十個(gè)深度學(xué)習(xí)網(wǎng)絡(luò)的評(píng)估,這種計(jì)算方法幾乎不會(huì)導(dǎo)致推理準(zhǔn)確性的損失。
在硬件架構(gòu)方面,A100GPU也引入了新的稀疏張量核心指令,該指令會(huì)跳過具有零值的條目的計(jì)算,從而使得張量核心的計(jì)算、吞吐量翻倍。
存儲(chǔ)系統(tǒng):緩存的改進(jìn)和40GB的HBM2內(nèi)存
由于芯片規(guī)模越來越龐大,因此NVIDIA需要改善整個(gè)架構(gòu)體系的存儲(chǔ)系統(tǒng)?,F(xiàn)在,安培架構(gòu)和A100芯片的L1、L2以及內(nèi)存體系(或者顯存體系,本文統(tǒng)一稱之為內(nèi)存)都得到了加強(qiáng)。
先來看L1緩存。在之前伏打架構(gòu)的V100上,NVIDIA首次引入了L1數(shù)據(jù)高速緩存和共享內(nèi)存子體系結(jié)構(gòu),這帶來了性能的顯著提高,并且簡(jiǎn)化了編程,減少了達(dá)到或者接近峰值應(yīng)用程序性能所需要的調(diào)整。將數(shù)據(jù)緩存和共享內(nèi)存功能組合在一起,可以為兩種類型的內(nèi)存訪問都提供最佳的性能。在安培架構(gòu)和A100GPU上,NVIDIA大幅度提升了L1緩存的容量至每個(gè)SM單元192KB,使其達(dá)到了前代伏打架構(gòu)的1.5倍,容量更充裕了。
接下來再看L2。A100GPU目前包含40MB的L2緩存,這個(gè)容量是之前V100的6.7倍。A100的L2分為兩個(gè)分區(qū),以實(shí)現(xiàn)更高的帶寬和更低的延遲。每個(gè)L2分區(qū)都會(huì)進(jìn)行本地化并且緩存數(shù)據(jù),以方便直接連接到該分區(qū)的GPC中的SM進(jìn)行數(shù)據(jù)訪問。這種結(jié)構(gòu)使得A100的緩存帶寬相比V100增加了2.3倍。硬件的緩存一致性將在整個(gè)GPU范圍內(nèi)維護(hù)CUDA編程環(huán)境,并且應(yīng)用程序會(huì)自動(dòng)更新以利用L2緩存的帶寬和延遲優(yōu)勢(shì)。
L2緩存屬于GPC和SM的共享資源,本身被放置在GPC之外?,F(xiàn)有情況可以看出,安培架構(gòu)和A100GPU的L2緩存容量大幅度增加顯著改善了很多HPC和AI工作負(fù)載的性能。這是因?yàn)槟切┬枰怀浞謧€(gè)訪問的數(shù)據(jù)集和模型,都不用頻繁地去HBM2內(nèi)存中讀取和寫入了,現(xiàn)在直接可以在L2中存取。另外,受到DRAM帶寬限制的部分工作負(fù)載,比如使用較小的batch尺寸的深度神經(jīng)網(wǎng)絡(luò),將充分受益于更大的L2。
在L2數(shù)據(jù)控制和優(yōu)化方面,安培架構(gòu)帶來了L2緩存駐留控件,借助于這個(gè)控件,用戶可以在L2緩存中永久保留一部分?jǐn)?shù)據(jù),也可以自定義哪些數(shù)據(jù)需要進(jìn)入L2保存、哪些不需要。舉例來說,對(duì)于深度學(xué)習(xí)推理的工作負(fù)載,一種被稱為“乒乓”的緩沖區(qū)可以持久駐留在L2緩存中,不但可以實(shí)現(xiàn)更快的數(shù)據(jù)訪問,同時(shí)還避免了回寫到DRAM浪費(fèi)時(shí)間和功耗。另外,在深度學(xué)習(xí)培訓(xùn)中心發(fā)現(xiàn)的一些“生產(chǎn)者-消費(fèi)者”鏈路,L2緩存的控制可以跨越讀寫關(guān)系來對(duì)其進(jìn)行優(yōu)化。在LSTM網(wǎng)絡(luò)中,L2緩存中可以重點(diǎn)考慮啟用循環(huán)權(quán)重以提高效能。
L2部分最后再來了解一下有關(guān)安培架構(gòu)的計(jì)算數(shù)據(jù)壓縮功能,這個(gè)功能可以用于加速非結(jié)構(gòu)化稀疏性和其他可壓縮數(shù)據(jù)模式。L2中的壓縮使得DRAM讀/寫帶寬相對(duì)提高了4倍,L2讀帶寬相對(duì)提高了4倍,L2容量相對(duì)提高了2倍。
最后再來看看40GB的HBM2緩存。由于現(xiàn)代計(jì)算任務(wù)的數(shù)據(jù)量越來越龐大、對(duì)數(shù)據(jù)傳輸?shù)囊笠苍絹碓礁?,再加上GPU吞吐量也日漸上升,為了滿足這些需求,傳統(tǒng)的GDDR內(nèi)存逐漸顯得力不從心,而更強(qiáng)大的HBM2內(nèi)存能更好地適應(yīng)計(jì)算任務(wù)的需求,因此,A100GPU使用了HBM2內(nèi)存,其容量為40GB,帶寬高達(dá)1555GB/s,相比V100計(jì)算卡增加了73%。
第三代NVLink總線
NVIDIA在安培架構(gòu)的A100GPU中啟用了第三代NVLink總線。初代NVLink總線使用在NVIDIAP100計(jì)算卡上,帶寬水平大約在100GB/s的級(jí)別。第二代NVLink總線使用在V100GPU上時(shí)總性能達(dá)到了300GB/s,也就是PCIe3.0總線的大約10倍。在A100GPU上,NVIDIA又引入了第三代NVLink總線,新總線每個(gè)信號(hào)對(duì)的數(shù)據(jù)速率達(dá)到了50Gb/s,幾乎達(dá)到了V100中25.78Gbit/s速率的兩倍。并且新總線的每個(gè)鏈路在每個(gè)方向上使用4個(gè)(差分)信號(hào)對(duì)(4個(gè)通道),而Volta中則使用8個(gè)信號(hào)對(duì)(8個(gè)通道)。與VoltaGPU相似,新的NVLink單個(gè)鏈路在每個(gè)方向上提供25GB/秒的帶寬,但與Volta相比僅使用一半的信號(hào)。NVLink鏈接的總數(shù)在A100中增加到12條,而在V100中僅為6條,最終整個(gè)A100的總帶寬高達(dá)600GB/秒。
目前在多GPU系統(tǒng)的構(gòu)建中,NVIDIA通過NVLink總線和NVSWITCH切換器來進(jìn)行數(shù)據(jù)的傳輸和切換,更大帶寬的NVLink總線和NVSwitch有助于多芯片協(xié)同工作和任務(wù)分配傳輸?shù)母咝?。目前,每一個(gè)A100GPU支持最多12條NVLink總線啟用,這樣一來搭配6個(gè)NVSwitch芯片,能夠?qū)崿F(xiàn)最多16個(gè)GPU互聯(lián),大幅度提高了單個(gè)設(shè)備的計(jì)算能力。
另外,安培架構(gòu)的GPU正式支持了PCIe4.0總線規(guī)范,未來NVIDIA所有新的GPU都將全面支持PCIe4.0總線規(guī)范。
專為云計(jì)算設(shè)計(jì):多實(shí)例GPU功能(Multi-InstanceGPU)
新的多實(shí)例GPU功能簡(jiǎn)稱MIG,這是一項(xiàng)針對(duì)云服務(wù)提供商的功能。當(dāng)配置為MIG時(shí),系統(tǒng)中GPU的利用率可以得到很大的提升,包括無須任何額外成本就可以執(zhí)行多達(dá)7倍的GPU實(shí)例。單個(gè)GPU還可以進(jìn)行分區(qū)使用并支持故障隔離。
從實(shí)際應(yīng)用來看,進(jìn)關(guān)許多數(shù)據(jù)中心的工作量在規(guī)模和復(fù)雜程度上都持續(xù)提升,但是依舊存在一些任務(wù)并不需要太多計(jì)算資源就可以完成,比如早期開發(fā)或者一些小批量的訓(xùn)練的簡(jiǎn)單模型。對(duì)于一個(gè)數(shù)據(jù)中心來說,最好的狀態(tài)是所有設(shè)備都滿載,保持高的資源利用率,因此數(shù)據(jù)中心一方面需要越來越大,另一方面也要很好的運(yùn)行這些較小的工作負(fù)載。
但是,在傳統(tǒng)的不支持虛擬化的GPU上,一個(gè)較小的工作負(fù)載就會(huì)占據(jù)整個(gè)GPU資源。這對(duì)整個(gè)系統(tǒng)來說是極為浪費(fèi)的。部分GPU可以實(shí)現(xiàn)虛擬化,并提供2個(gè)虛擬實(shí)例,但是對(duì)于A100這樣的擁有極高算力的GPU來說,2個(gè)虛擬實(shí)例依舊不能很好地解決這類問題。因此,NVIDIA帶來了新的多實(shí)例GPU功能,簡(jiǎn)稱為MIG,這個(gè)功能能夠?qū)⒚總€(gè)A100GPU加速設(shè)備劃分為7個(gè)虛擬的GPU實(shí)例,從而進(jìn)一步提高資源利用率,并有效的擴(kuò)展每個(gè)用戶和應(yīng)用程序的訪問權(quán)限。
NVIDIA提供了一些對(duì)比圖,用于對(duì)比沒有MIG配置和擁有MIG配置的設(shè)備運(yùn)行應(yīng)用程序的差異。在諸如伏打架構(gòu)的V100GPU上,多個(gè)應(yīng)用程序在單獨(dú)的GPU執(zhí)行資源也就是SM上同時(shí)執(zhí)行,但是由于內(nèi)存系統(tǒng)資源是在所有應(yīng)用程序中共享的,因此如果一個(gè)應(yīng)用程序?qū)RAM帶寬有很高的要求或者其請(qǐng)求超出了L2緩存的容量,那么可能會(huì)干擾其他應(yīng)用程序的運(yùn)行。
在安培架構(gòu)的A100GPU中,運(yùn)行的情況發(fā)生了變化。A100GPU可以通過MIG功能將單個(gè)GPU劃分為多個(gè)GPU分區(qū),這種劃分出來的分區(qū)被稱作GPU實(shí)例。每個(gè)實(shí)例的SM具有貫穿整個(gè)內(nèi)存系統(tǒng)的單獨(dú)且隔離的路徑,包括片上交叉開關(guān)的端口、L2緩存庫、內(nèi)存控制器和DRAM地址總線,都可以唯一分配給單個(gè)實(shí)例。這樣可以確保單個(gè)用戶的工作負(fù)載能夠以可預(yù)測(cè)的吞吐量和延遲運(yùn)行,并且具有相同的二級(jí)緩存分配和一樣的DRAM帶寬,即使其他任務(wù)需要更高的緩存或者DRAM帶寬也不會(huì)產(chǎn)生負(fù)面影響。
不僅如此,在使用MIG功能經(jīng)過對(duì)可用的GPU計(jì)算資源的分區(qū)后,系統(tǒng)可以為不同的客戶端(或者虛擬機(jī)、容器、進(jìn)程等)提供故障鼓勵(lì),從而提供定義的服務(wù)質(zhì)量QoS。MIG使得多個(gè)GPU實(shí)例可以在只擁有單個(gè)GPU的A100GPU設(shè)備上運(yùn)行,并且用戶無須對(duì)現(xiàn)有的CUDA編程模型進(jìn)行更改,以最大限度地減少編程工作。
對(duì)于云服務(wù)商(CSP)而言,MIG功能提高GPU了利用率并且無須任何成本。MIG支持CSP所需的必要QoS和隔離保證,以確保一個(gè)客戶端不會(huì)影響到另一個(gè)客戶端的工作或者調(diào)度。在這里,CSP通常會(huì)根據(jù)客戶使用模式對(duì)硬件進(jìn)行分區(qū),當(dāng)且僅當(dāng)系統(tǒng)硬件資源提供了一致的帶寬、適當(dāng)?shù)母綦x和良好的性能是,分區(qū)才有效的運(yùn)行。
在管理方面,借助安培架構(gòu)和A100GPU,用戶可以在虛擬的GPU上查看工作任務(wù)并進(jìn)行相關(guān)調(diào)度,甚至可以直接視作其為物理GPU。MIG功能現(xiàn)在可以和Linux系統(tǒng)以及其管理程序一起使用,用戶可以使用諸如DockerEngine軟件,并且很快支持使用Kubernetes進(jìn)行虛擬GPU的容器管理。
除了上述內(nèi)容外,安培架構(gòu)和A100GPU還帶來了包括錯(cuò)誤和故障檢測(cè)、控制和隔離等功能。比如遠(yuǎn)程GPU的錯(cuò)誤會(huì)通過NVLink回傳至源GPU。此外,CUDA11在安培架構(gòu)的適配上也做出了很多新的工作,比如對(duì)第三代張量核心的應(yīng)用適配等。這些更詳細(xì)的內(nèi)容,NVIDIA將會(huì)發(fā)布在隨后推出的A100TensorCoreGPU體系結(jié)構(gòu)白皮書中。有需要的讀者可以自行下載閱讀。
性能:A100相比V100大幅度提升
在現(xiàn)有的相關(guān)資料中,NVIDIA還展示了一些A100對(duì)比V100的計(jì)算能力的提升,同時(shí)加入對(duì)比的還有NVIDIA首個(gè)專門為AI計(jì)算和HPC加速而生的產(chǎn)品TeslaT4。從NVIDIA的數(shù)據(jù)來看,在綜合HPC加速計(jì)算中,A100大約性能是V100的1.78倍左右,其中性能倍數(shù)最高的部分是物理模擬,大約為2.0~2.1倍,最少的分子動(dòng)力學(xué)模擬也能帶來至少50%的速度提升,其余的包括工程計(jì)算、地球科學(xué)計(jì)算的性能倍數(shù)大約在1.7~1.9倍之間。
單芯片并行計(jì)算的巔峰
本文對(duì)安培架構(gòu)和A100GPU的介紹就到此為止了。受限于篇幅,本文只介紹了一部分特色的新功能,實(shí)際上這款史上最大的GPU產(chǎn)品還有大量的內(nèi)容值得探索,目前NVIDIA也在官網(wǎng)上放出了A100GPU和安培架構(gòu)的白皮書,有興趣的讀者可以自行搜索下載。
在本文的最后,我們還是驚訝于這款GPU的強(qiáng)大,高達(dá)540億晶體管,全新的第三代張量核心、新的MIG特性以及40GBHBM2內(nèi)存。略有遺憾的是,如果不是功耗和芯片制造的限制,它還可能更為強(qiáng)大。當(dāng)然,硬件的規(guī)格是一方面,從目前的情況來看,NVIDIA還在不斷地通過軟件的改進(jìn),充分釋放這540億晶體管蘊(yùn)藏的強(qiáng)大算力。無論怎樣,安培架構(gòu)和A100GPU,堪稱單芯片算力的巔峰,也是迄今為止人類設(shè)計(jì)的最復(fù)雜的芯片(可以沒有之一),這也是并行計(jì)算登峰造極的一刻,值得銘記和贊嘆。