我在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.谢谢!!!
答案 0 :(得分:0)
线程总数N
由
N = No_blocks * No_threads_per_block
所以每个块有A*B
个线程,所以你应该有Z*T=N/(A*B)
。
Z
和T
当然应该是整数,但不需要是2的幂。此外,取决于您的CUDA计算能力,每个块的数量都有限制网格的维度。