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

时间:2017-08-15 09:52:05

标签: opengl cuda gpgpu compute-shader

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

  

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

然而,两个OpenGL计算机着色器实现限制是

  

限制3. GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS = 1536

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

1 个答案:

答案 0 :(得分:2)

  

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

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

  

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

1024由于上述所有原因。您可以查看所有支持的硬件here的功能的完整摘要。