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

Nvidia GTX 1050 4GB GPU 可以启动多少个线程? 例如: 内核>>(参数);可以启动32个线程。 那么可能的最大线程数是多少? 我知道这篇文章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 所演示的示例代码。

这些限制是一个线程 block (第二个内核启动配置参数)限制为 1024 个线程总计,这是 3 个维度 x、y、z 的乘积,每个线程尺寸有个别限制:

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

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

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

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

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

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

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

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

https://stackoverflow.com/questions/68184905/

相关文章:

rust - 仅当处于 Release模式时,我如何在没有窗口的情况下运行 Rust 程序

r - 您如何使用 Pearson 相关性来选择 `R` 中的特征?

sql-server - 通过 docker 创建的默认 SQL Server 凭据是什么?

python - 从列表中删除字典

c++ - STL 中的 find() 与 binary_search()

mysql - SQL 查询问题 (MySQL)

javascript - 嵌入 : DiscordAPIError: Cannot send an

windows - 程序计数器、栅栏和处理器重新排序

powershell - Powershell 中的管道

rust - 为什么 [u8] 没有实现 Clone?