gpu的单位表示_GPU编程1--GPU中的基本概念
硬件資源
在硬件上,GPU的資源有SP和SM。SP:最基本的處理單元,streaming processor,也稱為CUDA core。最后具體的指令和任務(wù)都是在SP上處理的。GPU進(jìn)行并行計(jì)算,也就是很多個(gè)SP同時(shí)做處理。我們所說(shuō)的幾百核心的GPU值指的都是SP的數(shù)量;
SM:多個(gè)SP加上其他的一些資源組成一個(gè)streaming multiprocessor。也叫GPU大核,其他資源如:warp scheduler,register,shared memory等。SM可以看做GPU的心臟(對(duì)比CPU核心),register和shared memory是SM的稀缺資源。CUDA將這些資源分配給所有駐留在SM中的threads。因此,這些有限的資源就使每個(gè)SM中active warps有非常嚴(yán)格的限制,也就限制了并行能力。
每個(gè)SM包含的SP數(shù)量依據(jù)GPU架構(gòu)而不同,Fermi架構(gòu)GF100是32個(gè),GF10X架構(gòu)是48個(gè),Kepler架構(gòu)是192個(gè),Maxwell架構(gòu)是128個(gè),Turing架構(gòu)是64個(gè)。相同架構(gòu)的GPU包含的SM數(shù)量則根據(jù)GPU的中高低端來(lái)定。下圖是Turing架構(gòu)的SM。
軟件資源
從軟件上看,即GPU的線程模型,可以分為Grid、Block、Thread和Warp,其中前三個(gè)用下面的圖表示非常的直觀。Thread:一個(gè)CUDA的并行程序會(huì)被以許多個(gè)threads來(lái)執(zhí)行
Block:數(shù)個(gè)threads會(huì)被群組成一個(gè)block,同一個(gè)block中的threads可以同步,也可以通過(guò)shared memory通信
Grid:多個(gè)blocks則會(huì)再構(gòu)成Grid
Warp:GPU執(zhí)行程序時(shí)的調(diào)度單位,同一個(gè)warp里的線程執(zhí)行相同的指令,即SIMT。
舉一個(gè)比較形象的例子,把GPU當(dāng)做一個(gè)學(xué)校,學(xué)校里面有不同的年紀(jì)(Grid),每個(gè)年紀(jì)有幾個(gè)班(Block),每個(gè)班都有很多的學(xué)生(Thread),平時(shí)干值日要分不同的組(Warp),目前又給Warp中,有32個(gè)線程,即一個(gè)班中32個(gè)同學(xué)為一組一起干值日。
存儲(chǔ)資源
每一個(gè)Thread都有自己的local memory和resigters,即每個(gè)同學(xué)都可以把自己的東西放到自己的課桌上;每一個(gè)Block有shared memory,這個(gè)Block中的所有Thread都可以訪問(wèn),即每個(gè)班所在的教室里的走道、講臺(tái)等,是這個(gè)班里同學(xué)們的公共區(qū)域;Grid之間會(huì)有Global memory和Cache,所有的Grid都可以訪問(wèn),即學(xué)校里的操場(chǎng)、餐廳等,是全校同學(xué)的公共區(qū)域。
GPU模型總結(jié)
我們把GPU跟一個(gè)學(xué)校對(duì)應(yīng)起來(lái),學(xué)校里有教學(xué)樓、操場(chǎng)、食堂,還有老師和學(xué)生們;很快有領(lǐng)導(dǎo)來(lái)檢查,因此這個(gè)學(xué)校的學(xué)生們要完成打掃除的工作。
軟件資源包括Thread、Warp、Block和Grid,硬件資源包括SP和SM。
軟件資源和硬件資源的最小單位我們都認(rèn)為是學(xué)生,即一個(gè)Thread對(duì)應(yīng)一個(gè)SP(SP可以分為更小的ALU等,我們這里先不考慮)。
Block對(duì)應(yīng)的是班級(jí),Warp是班級(jí)里的不同小組,每個(gè)小組有32個(gè)學(xué)生;SM是教學(xué)樓的一個(gè)樓層,一個(gè)樓層上可以有多個(gè)班級(jí);一個(gè)Grid是一個(gè)年級(jí),年級(jí)和樓層并沒(méi)有確定的對(duì)應(yīng)關(guān)系。
每個(gè)學(xué)生都有個(gè)課桌 ,放自己的物品,不能讓別人用,表示每個(gè)Thread都有自己的空間(local memory + registers);
每個(gè)班級(jí)在一個(gè)教室里,教室里的有公共的空間(走道、講臺(tái)等),所有同學(xué)都可以停留,表示一個(gè)Block中有shared memory,這個(gè)Block中的Thread都可以訪問(wèn);
學(xué)校里的公共區(qū)域,比如操場(chǎng)、食堂等,所有同學(xué)都可以去運(yùn)動(dòng)、吃飯,表示GPU中有一些公共的存儲(chǔ)空間供所有的Grid訪問(wèn)。
雖然GPU是并行運(yùn)行,但也并不是我們理想中所有的Thread一起工作,在打掃衛(wèi)生時(shí),并不是所有學(xué)生一起干活,一個(gè)樓層同一時(shí)刻只能有一組32個(gè)學(xué)生(即一個(gè)Warp)干活,其他的學(xué)生都處于等待狀態(tài)。
歡迎關(guān)注微信公眾號(hào):Quant_Times
總結(jié)
以上是生活随笔為你收集整理的gpu的单位表示_GPU编程1--GPU中的基本概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: cameraraw预设_PS Camer
- 下一篇: 对象存储使用案例_杉岩MOS海量对象存储