2013-02-01 25 views
3

假設我有8個線程塊,我的GPU有8個SM。那麼GPU如何向SM發佈這個線程?Nvidia的Fermi GPU如何發佈threadblocks到流式多處理器

我發現一些程序或文章建議採用寬度優先的方式,即每個SM在本例中運行一個threadblock。然而,根據一些文件,如果GPU內核延遲受限,增加佔用率可能是一個好主意。可以推斷,如果可能的話,8個線程塊將在4個或更少的SM上運行。

我不知道哪一個是現實。 在此先感謝。

回答

2

很難說出GPU究竟在做什麼。如果你有一個你感興趣的特定內核,你可以嘗試讀取並存儲每個塊的%smid寄存器。

如何做到這一點的例子是here

+0

好吧..所以Nvidia不會公佈這方面的信息。也許我會嘗試這個實驗。謝謝! –

0

你問錯誤的問題:你不應該擔心硬件如何爲SM分配線程塊。這是GPU的責任。實際上,由於他們的編程模型沒有假定哪些塊將在哪些SM上運行,因此您可以在一系列計算設備/後代中獲得可擴展性。

相反,您應該嘗試爲GPU提供最佳數量的線程塊。這不是微不足道的,因爲它受到很多限制