OpenGL 和 CUDA 最大线程数之间的不一致



我的GPU是NVIDIA GeForce GT440,其计算能力版本为2.x。 英伟达官方CUDA_C_Programming_Guide指出

限制 1。每个块的最大线程数 = 1024
限制 2。每个多处理器的最大驻留线程数 = 1536

但是,OpenGL 计算机着色器实现限制中的两个是

限制 3.GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 1536

我的问题是
1.为什么限制 1 不等于限制 2 和限制 3?
2. 真正的线程/块(调用/工作组(应该是 1024 还是 1536?

为什么极限 1 不等于极限 2 和极限 3?

因为它不是一回事。块是 CUDA 中的逻辑结构,限制为最多 1024 个线程。但是多处理器可以同时运行多个块(对于硬件,最多 8 个(。因此,SM 在您的硬件中最多可以有 1536 个并发线程,但并非所有这些线程都可以来自单个块。

真正的线程/块应该是 1024 还是 1536?

1024 出于上述所有原因。您可以在此处查看所有受支持硬件功能的完整摘要。

最新更新