Nvidia CUDA初级教程4 GPU体系架构概述
Nvidia CUDA初級教程4 GPU體系架構(gòu)概述
視頻:https://www.bilibili.com/video/BV1kx411m7Fk?p=5
講師:周斌
本節(jié)內(nèi)容:
- 為什么需要GPU
- 三種方法提升GPU的處理速度
- 實(shí)際GPU的設(shè)計(jì)舉例:
- NVDIA GTX 480: Fermi
- NVDIA GTX 680: Kepler
- GPU存儲器設(shè)計(jì)
名詞解釋
- FLOPS - Floating-point OPerations per Second
- GFLOPS - One billion (10e9) FLOPS
- TFLOPS - 1000GFLOPS
為什么需要GPU
- 應(yīng)用的需求越來越高
- 計(jì)算機(jī)技術(shù)由應(yīng)用驅(qū)動 Application Driven
- 石油勘探
- 氣象預(yù)報(bào)
- …
GPU圖示
結(jié)構(gòu)略圖
GPU是一個(gè)異構(gòu)的多處理器芯片,為圖形圖像處理優(yōu)化
執(zhí)行單元 Execute Shader
CPU類型的內(nèi)核
可以看到,在常規(guī)的CPU類型的芯片中,真正進(jìn)行運(yùn)算的部分(左側(cè))所占的面積并不大,而是大緩存和上節(jié)提到的亂序執(zhí)行控制邏輯、分支預(yù)測器等優(yōu)化部分占了很大一部分面積。
思路1:精簡、減肥
移除掉那些來幫助單個(gè)指令流執(zhí)行的更快的組件。
兩個(gè)核,同時(shí)執(zhí)行兩個(gè)程序片元
16個(gè)核,同時(shí)執(zhí)行16個(gè)程序片元
指令流共享:多個(gè)程序片元共享指令流。因?yàn)槿绻獔?zhí)行不同的指令流的話,就需要復(fù)雜的控制機(jī)構(gòu)。
思路二:增加ALU,SIMD
- 處理單元ALU改進(jìn)
- 指令變化
- 多數(shù)據(jù)并行
128(16*8)個(gè)程序片元同時(shí)執(zhí)行,并發(fā)16路指令流
這16路可以共享相同的指令流,也可以不共享。
注意:
- SIMD處理并不總是需要顯式的SIMD指令:
- 選項(xiàng)一:顯式的向量運(yùn)算指令
- SSE等
- 選項(xiàng)二:標(biāo)量指令,但是硬件進(jìn)行矢量化
- 硬件進(jìn)行指令流共享
- NVIDIA等架構(gòu)
- 多個(gè)片元共享指令流
- 選項(xiàng)一:顯式的向量運(yùn)算指令
分支處理怎么辦?
由于共享相同的指令流,故按照根據(jù)邏輯,某些數(shù)據(jù)在分支被執(zhí)行時(shí),另一些在其他分支的數(shù)據(jù)只能等待。因?yàn)樗鼈児蚕碇噶盍?#xff0c;同一時(shí)間必須做相同的事情。
停滯怎么辦?
指令有時(shí)需要等待其依賴的數(shù)據(jù)
思路三:片元切換,掩藏延遲
上面提到,很多時(shí)候(如分支處理、停滯等),會出現(xiàn)大量片元等待的情況,這無疑會大大降低效率。對此,我們有思路三:
- 大量的獨(dú)立片元相互切換
- 通過偏遠(yuǎn)切換來掩藏延遲
給單個(gè)片元設(shè)置多個(gè)(彼此獨(dú)立的)任務(wù),當(dāng)某個(gè)任務(wù)停滯時(shí),去執(zhí)行其他任務(wù)。
獲得較高的吞吐 throughput。
上下文存儲空間
18個(gè)小的上下文:更好的延遲掩藏的效果
12個(gè)中等大小的上下文
四個(gè)大的上下文:延遲隱藏效果較差
每個(gè)上下文更大,但是延遲隱藏能力較差
注意:
- 上下文切換可以使軟件管理也可以是硬件管理,也可以是結(jié)合管理。
總結(jié)
“我”的設(shè)計(jì)
根據(jù)上面的三個(gè)思路,我們得到了一種芯片設(shè)計(jì):
- 16個(gè)核
- 每個(gè)核8個(gè)乘加ALU
- 16個(gè)同時(shí)指令流
- 64路并發(fā)指令流
- 512 (16*4*8) 個(gè)并發(fā)程序片元
- 256GFLOPS,1GHz
三個(gè)關(guān)鍵思路
- 選項(xiàng)1:顯式的 SIMD 向量指令
- 選項(xiàng)2:隱式的共享,由硬件管理
不同GPU架構(gòu)舉例
Fermi架構(gòu)
…
Kepler架構(gòu)
…
存儲和數(shù)據(jù)訪問
CPU類型的緩存
CPU通常會有多級緩存
GPU型的吞吐處理核
GPU中有更多的ALU,沒有傳統(tǒng)的分級緩存,需要更高的帶寬
帶寬是非常寶貴的資源
減少帶寬需求
- 減少不必要的數(shù)據(jù)請求,做更多的計(jì)算
- 每次訪存多取數(shù)據(jù),從而減少訪存次數(shù)
現(xiàn)代GPU的存儲器結(jié)構(gòu)
總結(jié)
GPU的特點(diǎn)
GPU是異構(gòu)、眾核的處理器
針對吞吐優(yōu)化
高效的GPU任務(wù)具備的條件
- 具有成千上萬的獨(dú)立工作
- 盡量利用大量的ALU單元
- 大量的片元切換掩藏延遲
- 可以共享指令流
- 適用于 SIMD
- 最好是計(jì)算密集的任務(wù)
- 通信和計(jì)算的開銷比例合適
- 不要受制于訪存帶寬
總結(jié)
以上是生活随笔為你收集整理的Nvidia CUDA初级教程4 GPU体系架构概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光伏类股票有哪些 大家可以多多的了解
- 下一篇: 18家上市公司退市 9家强制1家主动