Cuda gpu上的最大线程数

Cuda gpu上的最大线程数,cuda,gpu,tesla,Cuda,Gpu,Tesla,我使用的是特斯拉T10设备,它有2个cuda设备,一个块中的最大线程数为512,每个维度上的最大线程数为(512512,64),最大网格大小为(6553565535,1),每个cuda设备上有30个多处理器 现在我想知道我可以并行运行多少线程。我阅读了以前的解决方案,但没有一个能消除我的疑虑。 从上一次读取=(30)*512个线程,我可以并行运行(maxNoOfMultiprocessor*maxThreadBlockSize) 但当我启动32块512个线程时,它仍然在工作 怎么可能呢??? 我

我使用的是特斯拉T10设备,它有2个cuda设备,一个块中的最大线程数为512,每个维度上的最大线程数为(512512,64),最大网格大小为(6553565535,1),每个cuda设备上有30个多处理器

现在我想知道我可以并行运行多少线程。我阅读了以前的解决方案,但没有一个能消除我的疑虑。 从上一次读取=(30)*512个线程,我可以并行运行(maxNoOfMultiprocessor*maxThreadBlockSize)

但当我启动32块512个线程时,它仍然在工作 怎么可能呢??? 我不了解每个维度的最大线程数,以及最大网格大小部分 请举例说明。。。。。。。
提前感谢

为了本次讨论的目的,请忘记有多少多处理器。它与内核(即网格)中可以启动多少块无关

可以并行运行的线程数(即可以同时执行的线程数)不同于可以启动的线程数或可以启动的块数

通常情况下,您不希望启动在给定时间内只有机器可以运行的线程数的网格(maxNoOfMultiprocessor*maxThreadBlockSize)。机器需要更多的线程,因此可以隐藏延迟


您的计算机限制为每个块512个线程,但您可以启动最多65535个块的一维网格。这并不意味着所有这些块/线程都在同时运行,但机器最终将处理它们。

您可以创建比硬件能够同时处理的线程多得多的线程。这被nVidia称为“”。如果您有一张带有30个SMX的卡,30个区块将并行运行,然后将运行2个区块。如果在一张只有16个SMX(假设存在)的卡上运行32个区块的同一程序,则运行16个区块,然后运行16个其他区块

可能最后两个超过限制的块用于全局同步区域,因此前30个块首先完成,然后最后两个在另一个执行队列中。也许。这意味着我们可以启动任意数量的线程块,每个块中的最大线程数为512,请记住,第一次运行30*512将执行,然后下一次运行30*512,依此类推,但您无法确定之前执行的是哪个大块。这意味着对于我的机器,我们可以启动的最大线程块为65535,每个线程最多可以有512个线程我理解对了吗?由于h/w限制,只有(maxnoofmultiprocessor*maxthreadblocksize)会同时运行,对吗?是的,这基本上是正确的。关于在任何给定时刻可能运行的线程的确切数量,还有更多的细节,但是您的语句描述得非常好。当然。如果你觉得有意思的话,请随意投票,并接受你喜欢的答案。