可以在 CUDA 上启动的最大线程数

Posted

技术标签:

【中文标题】可以在 CUDA 上启动的最大线程数【英文标题】:Maximum number of threads that can be launched on CUDA 【发布时间】:2012-08-08 00:29:48 【问题描述】:

当我运行 deviceQuery SDK 示例时,它会显示以下统计信息:

每个块的最大线程数:1024 块的每个维度的最大尺寸:1024 x 1024 x 64 网格每个维度的最大尺寸:65535 x 65535 x 65535

那么是不是说我最多可以启动1024*65535*65535*65535的线程总数呢?

【问题讨论】:

是的,这是理论上的最大值。 这是 CC 2.0 设备的理论最大值。请参阅表Technical Specifications per Compute Capability in the CUDA C Programming Guide 了解设备特定限制。在 CC 3.* 设备上,x 维度中网格的最大维度增加到 (2^31)-1 【参考方案1】:

正如 talonmies 指出的那样,这是理论上的最大值。但是,您可以启动的线程数也取决于每个线程使用的资源量。这是因为特定块在设备的一个流式多处理器中执行。流式多处理器具有有限的资源(尤其是寄存器和本地内存),并且可以将每个块的线程数限制为小于问题中列出的理论最大值。因此,您还必须注意每个线程使用的资源量。如果每个线程使用的资源量很高,您可能无法达到该值。

【讨论】:

您的回答中有一些不正确的陈述。我对其进行了编辑以修复它们。 @talonmies:谢谢!顺便说一句,SM 和核心感到困惑 :)

以上是关于可以在 CUDA 上启动的最大线程数的主要内容,如果未能解决你的问题,请参考以下文章

块中的 CUDA 最大线程数

你能以编程方式知道 GPU 中每个块的最大块数和线程数吗?

CUDA 扭曲和每个块的最佳线程数

如何计算正在启动的 CUDA 线程数?

CUDA - 多处理器、Warp 大小和每个块的最大线程数:确切的关系是啥?

深度学习部署(十三): CUDA RunTime API thread_layout线程布局