我的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?
答案 0 :(得分:2)
为什么限制1不等于限制2和限制3?
因为它不是一回事。块是CUDA中的逻辑构造,并且最多限制为1024个线程。但是多处理器可以同时运行多个块(在硬件的情况下最多可以运行8个块)。因此,SM可以在您的硬件中拥有多达1536个并发线程,但并非所有这些线程都可以来自单个块。
真正的线程/块应该是1024还是1536?
1024由于上述所有原因。您可以查看所有支持的硬件here的功能的完整摘要。