我正在使用 TESLA T10 设备,它有 2 个 cuda 设备,一个块中的最大线程数为 512,每个维度上的最大线程数为 (512,512,64),最大网格大小为 (65535,65535,1),它有 30每个 cuda 设备上的多处理器。
现在我想知道我可以并行运行多少个线程。我阅读了以前的解决方案,但没有一个解决了我的疑问。
从以前的读取 =(30)*512 个线程我可以并行运行(maxNoOfMultiprocessor * maxThreadBlockSize)
但是当我启动 512 个线程的 32 个块时它仍然在工作
这怎么可能???
我不了解每个维度中的这些最大线程以及最大网格尺寸部分
请举例说明......
提前致谢
最佳答案
出于本次讨论的目的,请忘记有多少多处理器。它与您可以在内核(即网格)中启动的块数无关。
您可以并行运行的线程数(即可以同时执行)不同于您可以启动的线程数或您可以启动的块数。
通常,您不希望启动只有机器在给定时间可以运行的线程数 (maxNoOfMultiprocessor * maxThreadBlockSize) 的网格。机器需要比这更多的线程,所以它可以隐藏延迟。
您的机器限制为每个块 512 个线程,但您可以启动最多 65535 个块的一维网格。这并不意味着所有这些块/线程同时运行,但机器最终会处理它们。
关于cuda - gpu 上的最大线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019186/