Nvidia GPU 可以启动多少个线程?

How many threads can a Nvidia GPU launch?

Nvidia GTX 1050 4GB GPU 可以启动多少个线程? 例如: 内核<<<1,32>>>(参数);可以启动32个线程。 那么可能的最大线程数是多少? 我知道这个 post how many threads does nvidia GTS 450 has

这个问题可能经常是由于对GPU执行行为的误解而产生的。但是根据您给出的提示限制:

For example: kernel<<<1,32>>>(args); can launch 32 threads.

在最近的 CUDA 工具包支持的 GPU 之间没有变化(即计算能力从 3.0 到 8.6 的 GPU,其中包括您的 GTX 1050)。这些限制在 the documentation 中以及通过运行时查询给出,如 deviceQuery 示例代码所示。

这些限制是一个线程块(第二个内核启动配置参数)限制为 1024 个线程总数,它是 3 个维度 x,y,z 的乘积,并且每个维度都有各自的限制:

                    x      y     z
threadblock      1024   1024    64
       grid    2^31-1  65535 65535

同样,如上所述,网格(第一个内核启动配置参数)对每个维度都有单独的限制,但对产品没有限制。

因此,当前可以在内核启动中指定的最大线程数是网格维度和线程块限制的乘积:

total = (2^31-1)*65535*65535*1024

那个产品是 9,444,444,733,164,249,676,800

请注意,在大多数 GPU 上,启动这么大的内核,即使是空内核,也需要很长时间才能完成。 (*)

documentation涵盖线程层次结构以及如何指定多维网格和线程块。

(*) 为了娱乐,<<<dim3(1,65535,65535),1024>>> 的空内核启动在 GTX960 上需要大约 1 分钟的时间来处理。因此,在该 GPU 上“最大”空内核启动大约需要 2^31 分钟来处理(超过 4000 年)。