【发布时间】:2011-08-08 04:58:53
【问题描述】:
所有这些 CUDA 百灵鸟的力量都令人头晕目眩,但我一直想知道的是一维块/网格尺寸的硬限制(通常分别为 512/65535)。
在处理范围更大(大约数十亿)的问题时,是否有一种通过内核有效设置“队列”的自动化编程方式,或者是手动切片和切块的情况?
每个人都如何处理问题划分?
【问题讨论】:
-
我们在CUDA中不是已经默认有队列了吗?
-
同样的三个人不断出现在我所有的问题中! (不抱怨)我看到到处都是提到的队列,但没有白痴的例子。
-
内核启动是异步的,两个连续的内核启动(在同一个流上)意味着第二个将被“排队”。实际上,我使用队列作为流的别名。
-
但是没有“神奇”的 queue.push(kernel>>())?我对 DIY 没有意见,但重新发明轮子并不是那么可靠:D
-
没有。您可以根据需要排队任意数量的内核调用 - 启动操作是非阻塞的。对于多个流,流 id 成为内核启动的一部分,即。内核>>()。默认情况下,所有内容都进入流 0,但如果您使用多个流,则可以与内核执行重叠复制,并在 Fermi 上同时运行多个内核。
标签: cuda parallel-processing gpu partitioning gpgpu