2014-09-26 32 views
0

我是Cuda編程的初學者。道歉爲我的簡單的問題。我們是否需要在cuda編程中設置網格的數量?

我看了一些文檔和例子。如果我使用內核函數,我應該這樣做:

kernelfun <<<number of block, number of thread>>>(args). 

所以沒有網格編號。我們是否需要設置我們計劃使用的網格數量?

根據我的GPU,應該怎麼設置線程塊的數量,以及多少? enter image description here

因爲我看到每塊的最大線程數是512。所以我應該設置線程的num是512充分利用GPU。

另一個問題是要計算我的項目中使用的內存,當我設定的塊數和線程?或者電腦會自動安排,我不需要關心我的項目使用的內存。

回答

1

相信內核啓動參數是:

kernelfun <<<number of block, number of _threads_>>>(args). 

至於設置網格數 - 不,你沒有做這樣的事情。一次內核啓動相當於一個網格,它由塊和塊組成,線程由線程組成,線程是執行單元執行內核的代碼。

您對電網和塊大小的其他問題是最有可能重複,因爲這是一個相當有名的主題 - 請參閱此SO thread的實例。

至於最後一個問題,內存的擔憂,如果塊中的線程消耗比提供更多的寄存器,那麼內核根本不會成功執行。除此之外,我想不出有什麼要問究竟,所以如果不回答,那麼你質疑,請添加額外的細節,例如哪些類型的內存你關心等

+0

您好,感謝您的回答。你能否在我最近編輯的文章中回答其他問題? – Vivian 2014-09-26 12:36:38

相關問題