我正在实现的算法有许多事情需要并行完成。我的问题是,如果我不打算使用共享内存,我应该更喜欢使用更少的线程/块或更多的线程/块来减少性能的块,以便总线程数加起来就是我需要的并行数量去做?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