0

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

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

我在找 Z 和 T。谢谢!!!

4

1 回答 1

0

线程总数N由下式计算

N = No_blocks * No_threads_per_block

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

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

于 2012-07-28T16:24:39.017 回答