【发布时间】:2011-08-11 17:12:20
【问题描述】:
我将在 CUDA 上并行处理一些优化问题的本地搜索算法。这个问题非常难,所以实际可解决的问题的规模很小。 我担心的是,计划在一个内核中运行的线程数量不足以在 GPU 上获得任何加速(即使假设所有线程都已合并,没有银行冲突,非分支等)。 假设为 100 个线程启动了一个内核。期望从使用 GPU 中获利是否合理?如果线程数是 1000 怎么办?分析案例还需要哪些额外信息?
【问题讨论】:
-
拥有 100 个线程可能不会带来太多好处 - 如果你有数千个线程,CUDA 编程通常会变得实用,尤其是如果它们都做同样的事情。
-
准确地说,你的意思是同一条经线的线要做同样的事情,不是吗?
-
编写一个能正确完成您需要的原型,然后担心加快速度。如果有与您需要的类似的东西,请查看推力。
-
@AdelNick:好吧,至少,是的,如果这种区别有帮助的话。一般来说,任何形式的分支都是不好的。
-
如果你有一个难题并且你能想出的最好的方法是 100 线程并行化,那么要么 (a) 你没有认真思考或者 (b) 这不是很好- 适合 GPU。对于您的问题和环境,真正回答您的问题的唯一方法是微不足道的……编写、测试、分析、修改、重复。