国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
GPU到底如何做到這么快的?

HPC沿Nvidia CUDA-GPU架構(gòu)走。 從零到如今。


有人將機(jī)器學(xué)習(xí)定義為數(shù)學(xué)(算法),工程學(xué)(高性能計(jì)算)和人類能力(經(jīng)驗(yàn))之間的完美融合。 因此,這些領(lǐng)域中的任何進(jìn)展都將有助于機(jī)器學(xué)習(xí)的發(fā)展。 今天是HPC的轉(zhuǎn)折點(diǎn),特別是我們?cè)谡務(wù)揋PU的進(jìn)步。

Nvidia剛剛宣布了基于Ampere架構(gòu)的Geforce RTX 30系列(RTX3090,RTX3080,RTX3070)。 Ampere是我們最喜歡的GPU品牌的最新架構(gòu),但是到目前為止已經(jīng)發(fā)布了幾代具有CUDA功能的GPU。 在以下各段中,我將描述從今天開始到今天的CUDA架構(gòu)的全球概述,讓我們一起推動(dòng)一條有趣的路,從費(fèi)米到安培。 但是,在不進(jìn)一步了解細(xì)節(jié)之前,強(qiáng)烈建議您訪問以前關(guān)于CUDA執(zhí)行模型的文章,如果您不熟悉GPU計(jì)算的話。

遵循Nvidia GPU的自然發(fā)展時(shí)間表,該公司于2001年首次生產(chǎn)了能夠進(jìn)行可編程著色的芯片GeForce 3,該芯片被Playstation 2和Xbox所使用。 在GeForce 3(代號(hào)NV20)之前,還有其他一些產(chǎn)品:NV1(1995),NV3(1997),NV4(1998),NV5(1999),GeForce I(1999年末)和GeForce II(2000)。 但是,GeForce 3可能是第一個(gè)流行的Nvidia GPU。

指出Nvidia世界中目標(biāo)類別和體系結(jié)構(gòu)之間的差異很有趣,這可能會(huì)使讀者感到困惑。 傳統(tǒng)上,Nvidia為每種目標(biāo)客戶類別設(shè)計(jì)不同類型的產(chǎn)品,并命名為四個(gè)不同的產(chǎn)品:GeForce,Quadro,Tesla和(最近)Jetson。 盡管內(nèi)部使用的底層體系結(jié)構(gòu)對(duì)于這四個(gè)產(chǎn)品都是相同的。 用Nvidia話來說,它們四個(gè)具有相同的計(jì)算能力。 GeForce系列產(chǎn)品主要針對(duì)臺(tái)式機(jī)和游戲玩家。 Quadro被認(rèn)為是創(chuàng)建視頻內(nèi)容的工作站和開發(fā)人員的工具; 而Tesla是為超級(jí)計(jì)算機(jī)和HPC設(shè)計(jì)的。 最后,Jetson系列包含芯片中的嵌入式GPU。

正如我們?cè)谏厦婵吹降哪菢?,Nvidia在90年代初就開始了冒險(xiǎn),其GPU專注于grapichs,但是我們一直等到2007年才使用第一個(gè)CUDA架構(gòu):Tesla(是的,您是對(duì)的,他們使用相同的架構(gòu)名稱 稍后是一條產(chǎn)品線,這就是為什么我說這可能會(huì)造成混淆)。 Tesla是一個(gè)非常簡(jiǎn)單的體系結(jié)構(gòu),因此我決定直接從Fermi開始,它引入了Error-Correcting Code內(nèi)存,確實(shí)改善了上下文切換,內(nèi)存層次結(jié)構(gòu)和雙精度。

費(fèi)米架構(gòu)

每個(gè)Fermi流多處理器(SMI)均有32個(gè)CUDA內(nèi)核(流處理器),16個(gè)加載/存儲(chǔ)單元(LD / ST單元)組成,每個(gè)時(shí)鐘可處理16個(gè)線程的內(nèi)存操作,并具有4個(gè)特殊功能單元(SFU)以執(zhí)行超越數(shù)學(xué) 指令,內(nèi)存層次結(jié)構(gòu)和翹曲調(diào)度程序。

> Fermi Streaming Multiprocessor (Image by author)

該板有6個(gè)64位內(nèi)存分區(qū)和384位內(nèi)存接口,最多可支持6 GB的GDDR5 DRAM內(nèi)存。 CPU通過PCI-e總線連接到GPU。 每個(gè)CUDA內(nèi)核都有一個(gè)完整的流水線算術(shù)邏輯單元(ALU)和一個(gè)浮點(diǎn)單元(FPU)。 為了執(zhí)行雙精度,32個(gè)CUDA內(nèi)核可以用作16個(gè)FP64單元。 每個(gè)SM具有兩個(gè)warp調(diào)度程序,這些調(diào)度程序可啟用發(fā)布并同時(shí)執(zhí)行2個(gè)warp。

該體系結(jié)構(gòu)的關(guān)鍵模塊是內(nèi)存層次結(jié)構(gòu)。它引入了64 KB的可配置共享內(nèi)存和每個(gè)SM的L1緩存,可以將其配置為16 KB的L1緩存和48 KB的共享內(nèi)存。或16 KB共享內(nèi)存和48 KB L1緩存。盡管CPU L1緩存是針對(duì)空間和時(shí)間局部性而設(shè)計(jì)的,但GPU L1僅針對(duì)空間局部性進(jìn)行了優(yōu)化。頻繁訪問緩存的L1內(nèi)存位置不會(huì)增加命中數(shù)據(jù)的可能性,但是當(dāng)多個(gè)線程正在訪問相鄰的內(nèi)存空間時(shí),這很有吸引力。 768 KB L2緩存是統(tǒng)一的,并在為所有操作(加載,存儲(chǔ)和紋理)提供服務(wù)的所有SM之間共享。這兩個(gè)緩存均用于將數(shù)據(jù)存儲(chǔ)在本地和全局內(nèi)存中,包括寄存器溢出。但是,必須配置是在L1和L2中還是僅在L2中緩存讀取。此體系結(jié)構(gòu)表示為計(jì)算能力2.x,這是Nvidia的特殊術(shù)語,用于描述GPU的硬件版本,該硬件版本包括主修訂號(hào)(左數(shù)字)和次修訂號(hào)(右數(shù)字)。具有相同主要修訂版本號(hào)的設(shè)備屬于相同的核心體系結(jié)構(gòu),而次要修訂版本號(hào)對(duì)應(yīng)于對(duì)核心體系結(jié)構(gòu)的增量改進(jìn)。

> Fermi Memory Hierarchy (Image by author)

開普勒架構(gòu)

開普勒包括多達(dá)15個(gè)SM和六個(gè)64位存儲(chǔ)器控制器。 每個(gè)SM具有192個(gè)單精度CUDA內(nèi)核,64個(gè)雙精度單元,32個(gè)SFU,32個(gè)LD / ST單元和16個(gè)紋理單元。

> Kepler Streaming Multiprocessor (Image by author)

另外,四個(gè)warp調(diào)度程序每個(gè)都有兩個(gè)調(diào)度單元,它們?cè)试S同時(shí)發(fā)布和執(zhí)行四個(gè)warp。 它還將每個(gè)線程訪問的寄存器數(shù)量從Fermi中的63個(gè)增加到255個(gè); 它引入了改組指令,并通過在全局內(nèi)存中引入對(duì)FP64原子的本機(jī)支持來改進(jìn)原子操作。 它還介紹了CUDA動(dòng)態(tài)并行,即從內(nèi)核啟動(dòng)內(nèi)核的能力。 此外,內(nèi)存層次結(jié)構(gòu)與Fermi相似。

> Kepler Memory Hierarchy (Image by author)

通過允許在L1緩存和共享內(nèi)存之間分割32 KB / 32 KB,改進(jìn)了64 KB共享內(nèi)存/ L1緩存。 它還將共享內(nèi)存庫的寬度從Fermi中的32位增加到64位,并引入了48 KB只讀數(shù)據(jù)緩存來緩存常量數(shù)據(jù)。 L2緩存也增加到1536 KB,使Fermi L2緩存容量增加了一倍。 此外,開普勒計(jì)算功能由3.x代碼表示。

麥克斯韋架構(gòu)

Maxwell最多包含16個(gè)SM和四個(gè)內(nèi)存控制器。 每個(gè)SM已重新配置以提高每瓦性能。 它包含四個(gè)Warp調(diào)度程序,每個(gè)調(diào)度程序每個(gè)時(shí)鐘周期可以為每個(gè)warp調(diào)度兩個(gè)指令。 SM分為四個(gè)32-CUDA核心處理模塊,每個(gè)模塊具有八個(gè)紋理單元,8個(gè)SFU和8個(gè)LD / ST單元。

> Maxwell Streaming Multiprocessor (Image by author)

關(guān)于內(nèi)存層次結(jié)構(gòu),它具有96 KB的專用共享內(nèi)存(盡管每個(gè)線程塊最多只能使用48 KB),而L1緩存與紋理緩存功能共享。 L2緩存提供2048 KB的容量。 內(nèi)存帶寬也增加了,從開普勒的192 GB /秒增加到了224 GB /秒,并且為共享內(nèi)存中的FP32原子引入了本機(jī)支持。 Maxwell表示為計(jì)算能力5.x。

> Maxwell Memory Hierarchy (Image by author)

帕斯卡架構(gòu)

一個(gè)Pascal板由多達(dá)60個(gè)SM和8個(gè)512位存儲(chǔ)器控制器組成。 每個(gè)SM具有64個(gè)CUDA核心和四個(gè)紋理單元。 它具有與Kepler和Maxwell相同數(shù)量的寄存器,但是提供了更多的SM,因此總體上有更多的寄存器。 它被設(shè)計(jì)為支持比以前的體系結(jié)構(gòu)更多的活動(dòng)扭曲和線程塊。 共享內(nèi)存帶寬加倍,以更高效地執(zhí)行代碼。 它允許加載/存儲(chǔ)指令的重疊以增加浮點(diǎn)利用率,還改善了warp調(diào)度,其中每個(gè)warp調(diào)度程序都能夠在每個(gè)時(shí)鐘上調(diào)度兩個(gè)warp指令。 CUDA內(nèi)核能夠處理16位和32位指令和數(shù)據(jù),從而促進(jìn)了深度學(xué)習(xí)程序的使用,而且還為數(shù)字程序提供了32個(gè)FP64 CUDA內(nèi)核。 全局內(nèi)存本機(jī)支持也已擴(kuò)展為包括FP64原子。

> Pascal Streaming Multiprocessor (Image by author)

內(nèi)存層次結(jié)構(gòu)配置也已更改。 每個(gè)內(nèi)存控制器都連接到512 KB的L2緩存,提供4096 KB的L2緩存,并引入了HBM2內(nèi)存,提供了732 GB / s的帶寬。 它為每個(gè)SM提供64 KB的共享內(nèi)存,以及一個(gè)L1高速緩存,該L1高速緩存也可以用作紋理高速緩存,該紋理高速緩存用作合并緩沖區(qū)以增加扭曲數(shù)據(jù)的局部性。 它的計(jì)算能力由6.x代碼表示。

> Pascal Memory Hierarchy (Image by author)

最后,介紹了NVLink技術(shù)。 背后的想法是,任何4-GPU和8-GPU系統(tǒng)配置都可以解決相同的問題。 甚至,使用InfiniBand?和100 Gb以太網(wǎng)將幾組多GPU系統(tǒng)互連在一起,以形成更大,功能更強(qiáng)大的系統(tǒng)。

伏打架構(gòu)

一塊Volta板上最多可包含84個(gè)SM和八個(gè)512位內(nèi)存控制器。 每個(gè)SM具有64個(gè)FP32 CUDA內(nèi)核,64個(gè)INT32 CUDA內(nèi)核,32個(gè)FP64 CUDA內(nèi)核,8個(gè)用于深度學(xué)習(xí)矩陣算術(shù)的張量?jī)?nèi)核,32個(gè)LD / ST單元,16個(gè)SFU。 每個(gè)SM分為4個(gè)處理塊,每個(gè)塊包含一個(gè)新的L0指令高速緩存,以提供比以前的指令緩沖區(qū)更高的效率以及帶有調(diào)度單元的warp調(diào)度程序,這與Pascal的2分區(qū)設(shè)置相反,每個(gè)子核心warp都有兩個(gè)調(diào)度端口 調(diào)度程序。 這意味著Volta失去了在單個(gè)時(shí)鐘周期內(nèi)從線程發(fā)出第二條獨(dú)立指令的能力。

> Volta Streaming Multiprocessor (Image by author)

引入了合并的128 KB L1數(shù)據(jù)高速緩存/共享內(nèi)存,提供了96 KB的共享內(nèi)存。 HBM2帶寬也得到了提高,獲得900 GB / s。 此外,完整的GPU總共包括6144 KB的L2緩存,其計(jì)算能力由7.0代碼表示。

> Volta Memory Hierarchy (Image by author)

但是,最大的變化來自其獨(dú)立的線程調(diào)度。 以前的體系結(jié)構(gòu)以SIMT方式執(zhí)行扭曲,在32個(gè)線程之間共享一個(gè)程序計(jì)數(shù)器。 在發(fā)生分歧的情況下,活動(dòng)掩碼指示在任何給定時(shí)間哪些線程處于活動(dòng)狀態(tài),而使某些線程保持不活動(dòng)狀態(tài)并針對(duì)不同的分支選項(xiàng)序列化執(zhí)行。 Volta包括一個(gè)程序計(jì)數(shù)器和每個(gè)線程的調(diào)用堆棧。 它還引入了調(diào)度優(yōu)化程序,該調(diào)度程序確定必須將來自同一線程束的哪些線程必須一起執(zhí)行到SIMT單元中,從而提供更大的靈活性,因?yàn)榫€程現(xiàn)在可以以子線程束粒度分散。

Volta的最新突破功能稱為Tensor Core,與以前的Pascal P100加速器相比,它在深度學(xué)習(xí)應(yīng)用中的速度提高了12倍。 它們本質(zhì)上是混合精度FP16 / FP32內(nèi)核的陣列。 640個(gè)張量核中的每個(gè)核都在4x4矩陣上運(yùn)行,并且它們的關(guān)聯(lián)數(shù)據(jù)路徑是自定義設(shè)計(jì)的,以提高此類矩陣上運(yùn)算的浮點(diǎn)計(jì)算吞吐量。 每個(gè)張量核心每個(gè)時(shí)鐘執(zhí)行64個(gè)浮點(diǎn)融合乘加(FMA)操作,為訓(xùn)練和推理應(yīng)用提供多達(dá)125 TFLOPS。

此外,第二代NVLink為多GPU系統(tǒng)配置提供了更高的帶寬,更多的連接和改進(jìn)的可伸縮性。 與GP100上的4NVLink鏈接和160 GB / s的總帶寬相比,Volta GV100最多支持6條NVLink鏈接和300 GB /秒的總帶寬。

圖靈(不是全新的)架構(gòu)

NVIDIA首席執(zhí)行官黃仁勛(Jen-Hsun Huang)對(duì)Pascal,Volta和Turing之間的架構(gòu)差異提供了有趣的答復(fù)。 他基本上解釋說,Volta和Turing具有不同的目標(biāo)市場(chǎng)。 Volta適用于大規(guī)模培訓(xùn),最多可連接八個(gè)GPU,具有最快的HBM2,以及其他專門用于數(shù)據(jù)中心的功能。 另一方面,圖靈在設(shè)計(jì)時(shí)考慮了三個(gè)應(yīng)用程序:專業(yè)可視化,視頻游戲和使用Tensor Core的圖像生成。 實(shí)際上,圖靈具有與Volta 7.x相同的計(jì)算能力,這就是為什么我說圖靈不是一種全新的體系結(jié)構(gòu)。

最杰出的成就是:使用GDDR6內(nèi)存并引入了RT內(nèi)核,這些RT內(nèi)核可以渲染逼真的3D游戲和復(fù)雜的專業(yè)模型:

> Turing Streaming Multiprocessor. Source:NVIDIA

像Volta一樣,Turing SM被分為4個(gè)處理塊,每個(gè)處理塊都有一個(gè)單獨(dú)的warp調(diào)度程序和調(diào)度單元。 圖靈與Volta在兩個(gè)周期內(nèi)執(zhí)行指令幾乎相同,但其調(diào)度程序可以在每個(gè)周期內(nèi)發(fā)出獨(dú)立的指令。 此外,Volta和Turing并非像Pascal這樣的按線程分配,而是具有按線程調(diào)度的資源,它具有程序計(jì)數(shù)器和按線程堆棧的功能來跟蹤線程狀態(tài)。

安培架構(gòu)

最新的CUDA架構(gòu)稱為Ampere,可提供迄今為止最高的GPU性能。 我強(qiáng)烈建議其他人在這里進(jìn)行了非常完整的審查。

每個(gè)Ampere SM包含四個(gè)處理塊,每個(gè)處理塊具有用于數(shù)據(jù)緩存的L0高速緩存,一個(gè)扭曲調(diào)度程序,16個(gè)INT32 CUDA內(nèi)核,16個(gè)FP32 CUDA內(nèi)核,8個(gè)FP64 CUDA內(nèi)核,8個(gè)LD / ST內(nèi)核,用于矩陣乘法的Tensor內(nèi)核以及一個(gè) 16K 32位寄存器文件。 每個(gè)SM具有192 KB的組合共享內(nèi)存和L1數(shù)據(jù)緩存; 在GPU級(jí)別,它具有40MB的二級(jí)緩存以提高性能(比Volta中的V100大7倍)。 L2緩存分為兩個(gè)分區(qū)以實(shí)現(xiàn)更高的帶寬。

> Ampere Streaming Multiprocessor. Source: NVIDIA.

GA100 GPU芯片由128個(gè)SM組成,但是主要是因?yàn)?行銷-制造,所以不同的Ampere GPU將僅支持其中的一些。 例如,A100 GPU僅公開108個(gè)SM。 無論如何,完整的GA100由8個(gè)GPC組成,每個(gè)GPC具有16個(gè)SM和6個(gè)HBM2堆棧。 對(duì)于A100 GPU,這將以1555 GB / s的速度轉(zhuǎn)換為40 GB的HBM2 DRAM內(nèi)存。

它還引入了第三代NVIDIA Tensor內(nèi)核(僅次于Volta和Turing),使其能夠計(jì)算每個(gè)時(shí)鐘8×4×8混合精度矩陣乘法(將8×4矩陣與4×8矩陣相乘)。 例如,每個(gè)A100 Tensor Core每個(gè)時(shí)鐘執(zhí)行256個(gè)FP16 FMA(融合乘加)操作。 Ampere在其Tensor Core上支持許多數(shù)據(jù)類型,包括FP16,BF16,TF32,F(xiàn)P64,INT8,INT4和Binary。

最后,在Ampere上展示了第三代NVLink。 對(duì)于A100 GPU,它具有12條NVLink鏈接,總帶寬為600 GB / s,用于進(jìn)行多GPU計(jì)算。 關(guān)于PCIe連接,A100 GPU支持PCIeGen 4,它提供每個(gè)方向31.5 GB /秒的帶寬(對(duì)于x16連接),使PCIe 3的帶寬增加了一倍。

參考文獻(xiàn)

費(fèi)米白皮書

開普勒白皮書

麥克斯韋白皮書

帕斯卡白皮書

伏打白皮書

圖靈白皮書

安培白皮書

GPU上的并行算法

(本文翻譯自Adrian PD的文章《How the hell are GPUs so fast? A HPC walk along Nvidia CUDA-GPU architectures. From zero to nowadays.》,參考:https://towardsdatascience.com/how-the-hell-are-gpus-so-fast-a-e770d74a0bf)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
cuda高性能并發(fā)編程入門
Tesla V100深度講解:專為深度學(xué)習(xí)設(shè)計(jì)的Tensor Core有多牛?|英偉達(dá)公開課實(shí)錄
NVIDIA Tensor Core深度學(xué)習(xí)核心解析:全是干貨
一文詳解英偉達(dá)剛發(fā)布的 Tesla V100 究竟牛在哪?
CUDA學(xué)習(xí)筆記-CPU與GPU交互
NVIDIA GPU Volta架構(gòu)簡(jiǎn)述
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服