GPU的硬件結構,也不是具體的硬件結構,就是與CUDA相關的幾個概念:thread,block,grid,warp,sp,sm。 編程
sp: 最基本的處理單元,streaming processor 最後具體的指令和任務都是在sp上處理的。GPU進行並行計算,也就是不少個sp同時作處理 線程
sm:多個sp加上其餘的一些資源組成一個sm, streaming multiprocessor. 其餘資源也就是存儲資源,共享內存,寄儲器等。 blog
warp:GPU執行程序時的調度單位,目前cuda的warp的大小爲32,同在一個warp的線程,以不一樣數據資源執行相同的指令。 圖片
grid、block、thread:在利用cuda進行編程時,一個grid分爲多個block,而一個block分爲多個thread.其中任務劃分到是否影響最後的執行效果。劃分的依據是任務特性和 ip
GPU自己的硬件特性。 內存
下面幾張硬件結構簡圖 便於理解(圖片來源於網上) 資源
以上兩圖能夠清晰地表示出sm與sp的關係。 thread
此圖反應了warp做爲調度單位的做用,每次GPU調度一個warp裏的32個線程執行同一條指令,其中各個線程對應的數據資源不一樣。 效率
上圖是一個warp排程的例子。 stream
一個sm只會執行一個block裏的warp,當該block裏warp執行完纔會執行其餘block裏的warp。
進行劃分時,最好保證每一個block裏的warp比較合理,那樣能夠一個sm能夠交替執行裏面的warp,從而提升效率,此外,在分配block時,要根據GPU的sm個數,分配出合理的
block數,讓GPU的sm都利用起來,提利用率。分配時,也要考慮到同一個線程block的資源問題,不要出現對應的資源不夠。