4
有沒有什麼辦法可以明顯地限制我的程序運行時使用的GPU多處理器的數量?我想計算一下隨着越來越多的多處理器,我的算法是如何擴展的。CUDA - 正在使用的SM的數量限制
如果有幫助:我正在使用CUDA 4.0和具有計算能力2.0的設備。
有沒有什麼辦法可以明顯地限制我的程序運行時使用的GPU多處理器的數量?我想計算一下隨着越來越多的多處理器,我的算法是如何擴展的。CUDA - 正在使用的SM的數量限制
如果有幫助:我正在使用CUDA 4.0和具有計算能力2.0的設備。
Aaahhh ...我知道這個問題。在寫論文時我自己也玩過。
沒有明確的方法來做到這一點,但是你可以嘗試「黑客」,通過讓一些塊不做任何事情。
從我自己的實驗中,1.3個設備(我有GTX 285)按順序排列這些塊。因此,如果我在30個SM上啓動60個模塊,則將1-30模塊安排到SM 1-30,然後再將31-60模塊再次安排到SM 1-30。因此,通過禁用模塊5和35,SM 5實際上不是做任何事情。
但請注意,這是我2年前做的私人實驗觀察。它無法被NVIDIA確認,支持和維護,甚至可能會改變(或已經改變)新的GPU和/或驅動程序。
我會建議 - 嘗試使用一些簡單的內核來做很多愚蠢的工作,看看在各種「啓用」/「禁用」配置上計算需要多長時間。如果幸運的話,你會發現性能下降,表明2個塊實際上由單個SM執行。
我對此表示懷疑。唯一可能提供這種控制的是[設備API](http://www.clear.rice.edu/comp422/resources/cuda/html/group__CUDA__DRIVER.html),我沒有看到任何有希望的東西那裏。 –
@kylo:不能做 – talonmies
你能詳細解釋一下嗎?這是相當的架構問題,還是隻有沒有人需要讓他們的程序變慢呢? – Kylo