用于计算cuda内核所需块数的基本/简单公式

时间:2012-07-28 15:09:06

标签: cuda

我在CUDA中获得每个网格的正确数量的块时遇到了一些困难。 任何人都可以显示基本/简单的公式来计算CUDA内核中2D所需的块数吗? (即gridDim.x和gridDim.y)假设用户想要运行N个总线程数,并且他的块是A乘B(其中A * B <= 512或1024取决于计算能力),或者简单让我们假设他的积木是8比8.再次感谢。你也可以指出我们必须记住哪些事情,例如它们是否是2的权力真的很重要......

 dim3 dimBlock(A,B);
 dim3 dimGrid(Z,T);

我正在寻找Z和T.谢谢!!!

1 个答案:

答案 0 :(得分:0)

线程总数N

计算
N = No_blocks * No_threads_per_block

所以每个块有A*B个线程,所以你应该有Z*T=N/(A*B)

ZT当然应该是整数,但不需要是2的幂。此外,取决于您的CUDA计算能力,每个块的数量都有限制网格的维度。