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