我对运行在GPU上的内核吞吐量有疑问。假设它的占用率为0.5,块大小为256: 编程指南指出最好有许多块,这样它们就可以隐藏存储器延迟等。但我不明白为什么这是正确的。因为一旦内核每个流式多处理器的线程束数= 24,即3个块,它将达到峰值吞吐量。因此,拥有超过24个线程束(或3个块)对吞吐量不会产生任何影响。
我有什么遗漏吗?有人能纠正我吗?
我有什么遗漏吗?有人能纠正我吗?
如果您的CUDA启用卡上只有一个SM,那么拥有超过3个块也不会改变吞吐量。通常单个GPU中有8个或更多SM。
此外,运行在一个SM上的块数并不仅仅基于warp数量。这只是一个限制因素,还有许多其他因素。CUDA Occupancy Calculator是一个很好的工具,可以查看内核的占用情况。