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

Ani*_*uri 2 cuda gpu nvidia

Nvidia GTX 1050 4GB GPU 可以启动多少个线程?例如:内核<<<1,32>>>(args); 可以启动 32 个线程。那么可能的最大线程数是多少?我知道这篇文章nvidia GTS 450 有多少线程

Rob*_*lla 8

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

例如:内核<<<1,32>>>(args); 可以启动 32 个线程。

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

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

                    x      y     z
threadblock      1024   1024    64
       grid    2^31-1  65535 65535
Run Code Online (Sandbox Code Playgroud)

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

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

total = (2^31-1)*65535*65535*1024
Run Code Online (Sandbox Code Playgroud)

该产品为 9,444,444,733,164,249,676,800

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

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

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

  • 向新手添加额外信息:这些不是_同时_线程。它们并不是同时运行。 (4认同)