2013-03-01 64 views
1

當一個warp完成一個內核,但同一個block的另一個warp仍在運行時,將完成的warp被阻塞,直到同一個block的其他warp完成,或者完成的warp可用於立即重新使用另一個塊,而當前塊的其他變形仍在運行?CUDA warp/block finalization

回答

3

退出完成的變形,釋放調度程序隊列中的變形槽,用於另一個變形,無論來自同一個塊還是另一個變形。可隨時打開並準備好由warp調度程序執行的warp數量受限於特定硬件類型(計算能力)。 SM上任何給定時間可打開(調度)的線程塊數量也受計算能力的限制。因此,如果除特定塊之一以外的所有經線都完成並退出,但一個經線仍處於活動狀態,則該經線會佔用一個經線槽,並且它所屬的塊也會佔用一個塊槽。只有當一個塊的所有變形完成並退出時,該塊纔會退出,釋放它的塊槽供其他塊使用。

+1

謝謝,這就解釋了爲什麼持久線程技術對於光線跟蹤應用程序很有用,其中線程分歧可能很大,並且某些線程可能比其他線程晚得多。沒有線程持久性,在總時間的大部分時間內,某些塊可能會變得幾乎空閒。 – bubnikv 2013-03-03 12:49:08