CUDA中可能的最大块数是多少?

STE*_*STE 13 cuda

从理论上讲,每个网格的直径可以达到65535个块,最大为65535*65535*65535.

我的问题是:如果你调用这样的内核kernel<<< BLOCKS,THREADS >>>()(没有dim3对象),BLOCKS可用的最大数量是多少?

在我的应用程序中,我将其设置为192000并且似乎工作正常...问题是我使用的内核更改了一个巨大数组的内容,所以虽然我检查了数组的某些部分并且看起来很好,我无法确定内核是否在其他部分表现得很奇怪.

为了记录,我有一个2.1 GPU,GTX 500 ti.

per*_*eal 12

使用3.0或更高的计算能力,您可以在x维度中拥有最多2 ^ 32 - 1个块,在y和z维度中最多可以包含65535个块.见表H.1.每个计算的功能支持CUDA C编程指南9.1版的功能.

正如Pavan所指出的,如果你没有为网格配置提供dim3,你将只使用x维度,因此每个维度限制适用于此处.

  • 可能很高兴提到没有dim3的BLOCKS只指定你想要沿x维度的块数,因此限制仍然是65535 (3认同)

小智 12

如果有人根据谷歌搜索登陆这里(正如我刚才所做的那样):

自问这个问题以来,Nvidia改变了规范.使用3.0及更高版本的计算能力,允许线程块网格的x维度达到2'147'483'6472 ^ 31-1.

请参阅当前:技术规范