就像針對數據中心的GPU可以一直追溯到十年前的 Fermi架構一樣,如果我沒(méi)記錯,Tesla C2050是Tesla系列中的第一款計算卡。而今天聊到的Ampere GPU設計中包含計算引擎、緩存和協(xié)調邏輯的層次結構?;镜挠嬎銌卧M織單位是流式多處理器,即SM,SM結構有許多并排放置的不同功能的計算引擎,就像一個(gè)部門(mén)里的一個(gè)個(gè)職員,等待部門(mén)經(jīng)理任務(wù)分發(fā)器并行發(fā)送給它們的工作。
在每年發(fā)布兩次的500強排名中,這些SM單元就是HPC專(zhuān)家所認為的CPU領(lǐng)域的核心,比如在評估超級計算機的核心數量時(shí),這些超級計算機一年兩次進(jìn)入500強。L1指令和數據緩存外的任何計算塊都都被這種思維方式的強行核心化,就像你爹對外人介紹你、你哥和你弟統一宣傳犬子。而在Nvidia所謂的核心中,我們在CPU Land中可能將其稱(chēng)為單元(Nvidia的人有時(shí)也稱(chēng)其為單位,沒(méi)啥區別,叫法不同而已)。
在過(guò)去,SM中的計算個(gè)體被稱(chēng)為不同的流處理器(或SPs或CUDA核心),但是這些SPs現在分了很多不同的計算類(lèi)型,它們具有不同的數據格式和處理類(lèi)型,而不僅僅是32位的單精度CUDA核心。即SM中的每個(gè)SPs都應該被認為是我們所知道的核心,而不應該把SM叫做核心,并且非常粗淺的認為和CPU領(lǐng)域中的核心是一個(gè)概念。在GPU方面Nvidia最終關(guān)心的是每臺設備的絕對功耗、單位功耗的成本以及每瓦效益。
廢話(huà)說(shuō)了一大篇,下面看看一個(gè)SM團簇和傻兒子SP們的結構:
每個(gè)SP具有16個(gè)32位整數單元(INT32),16個(gè)32位浮點(diǎn)單元(FP32)和8個(gè)64位(FP64)單元。這與Volta SM非常相似。下面是Volta SM結構,我們來(lái)作個(gè)對比:
Volta上0級緩存的大小我們一直被蒙在鼓里,也不知道Ampere GPU的具體規模(你信爆料?)。但是Ampere SP上的翹曲調度程序、調度單元和寄存器文件上的輸入設計和速度看起來(lái)與Volta GPU上的相同。這兩個(gè)設備的L1指令高速緩存大小也沒(méi)有寫(xiě)明,但是我們知道,在SM上的L1數據緩存在伏特下為128 KB,現在增加了50%,達到192kb(安培架構)。加載/存儲和紋理單元本質(zhì)上是相同的。
從整體角度來(lái)看,Ampere與Volta大概構型非常相似,但是Ampere SP和SM有很多細節方面的調整,比如融合兩個(gè)張量的核心單位的SP,使GPU做FP64計算時(shí)效率相當爆炸。另外有很多數據格式和稀疏矩陣加速的創(chuàng )新式改進(jìn),可以讓Ampere在A(yíng)I工作上提供更高性能,相當于將FP單元或Tensor Core單元加倍,可以在盡可能大的范圍內做到這一點(diǎn)。
另外需要提到的一點(diǎn),稀疏矩陣加速有一個(gè)花式技巧,如下圖:
在GPU上訓練了機器學(xué)習模型后,模型會(huì )輸出一組密集權重。英偉達(Nvidia)創(chuàng )建了一種自動(dòng)修剪技術(shù),該技術(shù)使用2:4非零模式將矩陣的密度降低了一半,不會(huì )導致推理權重的有效性下降,并且跳過(guò)了引入的零值, Tensor Core單元可以執行的浮點(diǎn)數或整數運算,效率超過(guò)使用密集矩陣的兩倍之多。
Volta GPU總共有84個(gè)SM單元,其中80個(gè)SM單元在正常工作,其中4個(gè)因為不合格被屏蔽,這幫助Nvidia從代工合作伙伴臺積電的12納米工藝中獲得了更好的良品率,這在三年前絕對是最前沿的。隨著(zhù)臺積電轉向7nm工藝,Ampere芯片上??可以有更多的SM單元。SM的增長(cháng)率提高了52.4%,這是從Volta轉向Ampere的性能提升的很大一部分來(lái)源。生產(chǎn)的Volta和Ampere平臺分別搭載80 SM和108 SM,因此,僅僅因為設備上計算單元數量的增加,理論性能就增加了35%。下面是滿(mǎn)血Ampere GA100 128SM的架構圖:
安培GPU的計算層次結構是這樣的:兩個(gè)SMs一起組成一個(gè)紋理處理器集群(TPC)。其中8個(gè)TPC(也就是16個(gè)SMs)組成了一個(gè)GPU處理集群,其中8個(gè)組成了完整的GPU。8個(gè)多實(shí)例GPU(或MIG)片可以獨立地用作虛擬推理引擎和桌面基礎設施的虛擬GPU,這就是老黃在發(fā)布會(huì )上所說(shuō)多任務(wù)的含義。Volta GV100 GPU有6個(gè)GPC,理論上它們也可以是自己的MIG,但是Nvidia并沒(méi)有像在GA100中那樣,在GV100中直接為每個(gè)GPC分配單獨的緩存路徑和內存控制器。這就是MIG的真正含義:一個(gè)更獨立的GPC,消除了在將一個(gè)GPU作為8個(gè)小設備運行時(shí)對內存容量和帶寬的爭奪。
在SMs全陣列激活的情況下,Ampere有8291個(gè)FP32和INT32單元,4096個(gè)FP64單元和512個(gè)張量核心單元。這是一個(gè)集成度相當高的GPU。僅激活了108個(gè)SM,就有6912個(gè)FP32和INT32單元、3456個(gè)FP64單元和432個(gè)張量核心單元可以運行工作負載。
從安培(Volta)往安培(Ampere)看,除了架構外其它配套設備也發(fā)生了一些重要變化,接口支持PCI-Express 4.0,速率為Volta PCI-Express 3.0接口的帶寬的兩倍,雙工速率為128GB/s(x16插槽上單向為64GB/s)。
還有NVLink端口。如果你使用Pascal PA100 GPU,NVLink 1.0的運行速度為20Gb/s,并且設備上四個(gè)端口中的每個(gè)端口均提供40GB/s的帶寬(單向20GB/s)。而VoltaGPU上Nvidia將其N(xiāo)VLink 2.0的信號傳輸速率提高到25.8Gb/s,每個(gè)方向和六個(gè)接口的總帶寬為50 GB/s,這使得用戶(hù)可以在Volta GV100芯片中獲得300GB/s的帶寬。對于A(yíng)mpere,不少業(yè)內人士認為Nvidia正在讓下一代GPU支持PAM-4,PAM-4信號增加兩位,并且在25GHz頻率下,每個(gè)NVLink 3.0雙向通道具有與NVLink 2.0相同的25GB/s帶寬,但是只需要一半的信號數量與NVLink 2.0配對,每個(gè)端口提供相同的50GB/s帶寬。因此,現在A(yíng)mpere芯片可以具有12個(gè)NVLink端口,這些端口仍與300GB/s的NVSwitch端口聚合的帶寬匹配,這意味著(zhù)可以做一些拓撲操作來(lái)互連GPU,增強使用者的業(yè)務(wù)靈活性。
在顯存方面,A100有12個(gè)HBM2顯存控制器,被植入GA100芯片上的6組HBM2顯存中,使A100擁有40GB的顯存容量和1555GB/s的總內存帶寬,并且以1215MHz運行。Volta芯片以HBM2內存以877.5 MHz的頻率運行,最初只有16GB的容量和900GB/s的帶寬。大約一年后,內存容量增加了一倍,但帶寬保持不變。去年11月,在去年11月的SC19超級計算會(huì )議上,Nvidia悄悄推出了只有PCI-Express 3.0版本和1106 MHz的Tesla V100S。 HBM2內存將Volta上的帶寬提高到1134GB/s。為了達到計劃要求的性能,V100S可以通過(guò)將剩余的四個(gè)SM激活以達到完整的84SM,從而將整個(gè)性能提高4.7%。但事實(shí)證明,V100S只有80個(gè)SM在1601 MHz頻率下運行,所以性能是增長(cháng)了4.6%而非4.7%,一些超大規模生產(chǎn)者或HPC中心需要巨大算力的企業(yè)才會(huì )去購買(mǎi)V100S,而A100會(huì )一步一步代替V100S。
如果比較GV100和GA100架構,懂行的人會(huì )發(fā)現Ampere芯片上??的L2緩存分為兩個(gè)部分,而不是Volta芯片核心的單個(gè)L2緩存。二級緩存已增加到40MB,是Volta的6.7倍,并結合了新的分區交叉開(kāi)關(guān)結構,該結構讓A100的L2緩存讀取是Volta L2緩存讀取效率的2.3倍,這是Ampere性能改進(jìn)的主要因素之一。簡(jiǎn)單點(diǎn)來(lái)說(shuō),可能在程序內跑分測試你會(huì )發(fā)現Volta和Ampere單個(gè)單元效率沒(méi)有變化,但是這些相同的基本計算單元會(huì )在A(yíng)100上獲得更多的性能,并將工作從FP32或FP64單位負載移到張量核心上,進(jìn)一步得到加速。
對于實(shí)際TDP,Nvidia的GPU架構師認為他們沒(méi)有足夠的L1緩存和L2緩存來(lái)降低GV100芯片中的延遲,并且通過(guò)調整內存層次結構并將其擴展到安培架構,從而使安培在Volta設計的單元中獲得更多的潛在性能。用于推理的MIG設計和用于虛擬桌面的虛擬gpu的獨立路徑也是一個(gè)優(yōu)勢,它為AI訓練和HPC創(chuàng )建了一個(gè)更加平衡的引擎。還有許多其他功能可以提高性能,比如異步復制可以將數據從全局HBM2內存加載到SM L1高速緩存,而無(wú)需通過(guò)寄存器文件。
使用FP16或FP32的FP16、bfloat16 (BF16)和用于新的Tensor Core的張量浮點(diǎn)32 (TF32)格式的FP16顯示了在沒(méi)有稀疏矩陣支持的情況下的性能,開(kāi)啟該模式后性能提高了2倍。稀疏矩陣支持在激活時(shí)將Tensor Core的INT4(4字節整數)和INT8(8字節整數)推理處理提高了2倍。Tensor Core不能直接用于FP64計算,但是Tensor Core實(shí)現的64位矩陣運算可以提供2倍于FP64運算的吞吐量,相比之下,在GA100上的FP64單元規模對比GV100提升了35%,后者只有普通的FP64單元。
將GA100芯片與GV100進(jìn)行比較時(shí),基本FP64單元的基本性能僅增加了25%,從7.8TPFS增至9.7TPFS,考慮到SM數量增加了35%,頻率降低了7.8%,這大約是比較合理的變動(dòng)。但是如果你想獲得兩倍的性能,你可以在每個(gè)SP的Tensor Core團運行FP64矩陣運算。
值得一提的是,額外的20%的內存帶寬和內存容量將被解鎖,剩下的18.5%的潛在性能也將被釋放,這些改動(dòng)將體現在被解封的SM單元上。與Volta架構相比,Ampere的潛在性能更大。