2013-01-17 29 views

回答

3

有個CUDA GPU佔用率計算器,在CUDA的安裝目錄找到。

cuda-5.0/tools/CUA_Occupancy_Calculator.xls 

它可以顯示爲不同的GPU計算能力的物理極限硬件種源(線/塊,寄存器,共享MEM)和經紗之間佔用的的關係,以及。

4

快速回答:是的。 典型限制?如果您想要達到0.5左右的佔用率,那麼每個線程的寄存器大約爲32-64個寄存器,具體取決於架構。

稍微長一點的答案: 請記住,寄存器的數量與「局部變量的數量」不完全相同。這是因爲,在給定的時間,你通常不需要所有的局部變量,編譯器會嘗試重用寄存器。您可能最終將多個變量映射到同一個寄存器。其次,即使用完了寄存器空間,編譯器也會嘗試將這些值泄漏到很少使用的全局內存中。通常在你的代碼中有很少的寄存器溢出並不是費時。此外,這些寄存器溢出導致完全對齊的全局內存訪問模式。

如果您想知道每個內核正在使用多少寄存器和(溢出)本地內存,請將--ptxas-options=-v添加到您的編譯參數中。