为什么CUDA块大小为256或512与其他块相比具有更好的性能?

时间:2011-09-23 16:53:49

标签: cuda

我在Windows 7上用CUDA C写了几个程序。我用块大小做了实验。我发现在大多数情况下,256或512的块大小比其他块大。任何人都可以告诉我背后的确切技术原因吗?或者指出要知道的任何资源。由于其他块大小为32(warp)的倍数会降低性能。提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果没有实际测量,就无法确定给定芯片的最佳块大小。例如,如果您正在进行2D纹理处理,那么16x4块就可以正常工作。在您的情况下,512可能是芯片中内存分区数的倍数。 (在GeForce 8800 GTX上,有6个内存分区,384对于带宽内核来说是一个非常好的块大小。)

占用率只是影响性能的众多因素之一 - 更多线程并不总是更好 - 对于可以使用寄存器(而不是共享内存)来保存中间结果的工作负载,使用更多寄存器的块和更少的线程最有效。

抱歉,我无法给出更明确的答案,但这是一个复杂的问题。