我对可以在 Fermi GPU 中启动的最大线程数感到困惑。
我的 GTX 570 设备查询说明如下。
Maximum number of threads per block: 1024
Maximum sizes of each dimension of a block: 1024 x 1024 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 65535
根据我的理解,我将上述陈述理解为:
对于 CUDA 内核,我们最多可以启动 65536 个块。每个启动的块最多可以包含 1024 个线程。因此,原则上,我最多可以启动 65536*1024 (=67108864) 个线程。
它是否正确?如果我的线程使用很多寄存器怎么办?我们还能达到这个理论上的最大线程数吗?
编写并启动CUDA内核后,我怎么知道我启动的线程数和块数确实已经实例化了。我的意思是我不希望 GPU 计算一些垃圾或行为怪异,如果我偶然实例化了比该特定内核可能的更多线程。