我正在實現的算法有許多事情需要並行完成。我的問題是,如果我不打算使用共享內存,我應該更喜歡使用更少的線程/塊或更多的線程/塊來減少性能的塊,以便總線程數加起來就是我需要的並行數量去做?Cuda塊或線程首選項
1
A
回答
1
我假設「設定數量的東西」是一個小數字,或者你不會問這個問題。試圖揭示更多的並行性可能花費時間。
CUDA GPUs組執行活動和結果內存訪問到32個線程的warps。所以至少要創建每個線程塊至少一個warp。
然後,您會希望至少創建與GPU中SM一樣多的線程塊。如果你有4個SM,那麼你在32以上的下一個縮放增量就是創建4個線程塊,每個線程塊有32個線程。
如果在這個假設的例子中你有超過128個「數目的東西」,那麼你可能會想要增加每個線程塊和線程塊的扭曲。你可能會從threadblocks開始,直到你得到一些數字,大約16個左右,這將允許你的代碼在比你假設的4-SM GPU更大的GPU上擴展。但是可以在單個SM上打開的線程塊數量是有限制的,因此在16個線程塊之後很快就會增加每個線程塊超過1的線程數量(即超過32個線程)。
這些針對小問題的策略將允許您在問題擴大時儘可能快地利用GPU上的所有硬件,同時如果問題足夠大,仍然允許隱藏延遲時間的機會(例如,超過每個線程塊有一個warp,或者每個SM有多個threadblock)。
相關問題
- 1. cuda線程和塊
- 2. Java線程或Cuda線程
- 3. CUDA 2D,3D線程塊
- 4. SQLite或首選項
- 5. cuda大矩陣和塊/線程
- 6. CUDA線程和塊級別同步
- 7. cuda:線程塊之間共享'常量'
- 8. 使用CSS(第一首選項)或javascript(首選首選項)在引導程序中更改數據目標
- 9. CUDA塊/扭曲/線程如何映射到CUDA核心上?
- 10. cuda線程
- 11. CUDA線程/線程塊之間的通信
- 12. iPhone滑塊保存用戶首選項
- 13. CF首選項/庫/首選項
- 14. URL結構首選項 - 是否斜槓或斜線?
- 15. CUDA線程線性索引
- 16. CUDA線程分配
- 17. CUDA線程內環
- 18. CUDA線程分配
- 19. CUDA線程通信
- 20. CUDA線程閒置
- 21. CUDA並行線程
- 22. CUDA估計每塊和塊編號線程2D網格數據
- 23. Objective-C首選項窗口makeKeyAndOrderFront或showWindow?
- 24. 綁定首選項:名稱或類型?
- 25. Android:在首選項或SQLite中存儲
- 26. Automator首選項
- 27. 在UI線程上Android加載共享首選項
- 28. 首選項不顯示 - 首選片段
- 29. qt線程選項
- 30. 來自Ubuntu PPA的CUDA:編譯首個CUDA程序
[CUDA確定每個塊的線程,每個網格的塊的可能重複](http://stackoverflow.com/questions/4391162/cuda-determining-threads-per-block-blocks-per-grid),[CUDA,如何選擇<<<塊,線程<>>?](http://stackoverflow.com/questions/12660060/cuda-how-to-choose-blocks-threads),也許[CUDA - 如果我選擇了太多塊?](http://stackoverflow.com/questions/5476152/cuda-what-if-i-choose-too-many-blocks)。 – JackOLantern