CUDA 關於 BLOCK數目與Thread數目設定
阿新 • • 發佈:2018-11-25
GPU的計算核心是以一定數量的Streaming Processor(SP)組成的處理器陣列,NV稱之為Texture Processing Clusters(TPC),每個TPC中又包含一定數量的Streaming Multi-Processor(SM),每個SM包含8個SP。SP的主要結構為一個ALU(邏輯運算單元),一個FPU(浮點運算單元)以及一個Register File(暫存器堆)。SM內包含有一個Instruction Unit、一個Constant Memory、一個Texture Memory,8192個Register、一個16KB的Share Memory、8個Stream Processor(SP)和兩個Special Function Units(SFU)。(GeForce9300M GS只擁有1個SM) Thread是CUDA模型中最基本的執行單元,執行最基本的程式指令。Block是一組協作Thread,Block內部允許共享儲存,每個Block最多包含512個Thread。Grid是一組Block,共享全域性記憶體。Kernel是在GPU上執行的核心程式,每一個Grid對應一個Kernel任務。 在程式執行的時候,實際上每32個Thread組成一個Warp,每個 warp 塊都包含連續的執行緒,遞增執行緒 ID 。Warp是MP的基本排程單位,每次執行的時候,由於MP數量不同,所以一個Block內的所有Thread不一定全部同時執行,但是每個Warp內的所有Thread一定同時執行。因此,我們在定義Thread