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