Architecture CUDA内核与线程数

Architecture CUDA内核与线程数,architecture,cuda,hardware,Architecture,Cuda,Hardware,我对NVidia GPU中的内核数、SMP数和最大线程数之间的关系感到困惑。我的笔记本电脑GT650m的设备属性显示384个内核,2个SMP,每个SMP有1024个线程 这些数字和经纱尺寸之间的关系如何?我假设(可能是错误的)每个SMP有192个核,但这不是1024的系数。如果每个核心运行32个线程的扭曲,我希望每个SMP运行32*192个线程,或者2^5*(2^7+2^6),或者4096+2048=6142 我错过了什么 我认为您应该更深入地了解cuda中的内核调度 有两种重要的大小:块和每个

我对NVidia GPU中的内核数、SMP数和最大线程数之间的关系感到困惑。我的笔记本电脑GT650m的设备属性显示384个内核,2个SMP,每个SMP有1024个线程

这些数字和经纱尺寸之间的关系如何?我假设(可能是错误的)每个SMP有192个核,但这不是1024的系数。如果每个核心运行32个线程的扭曲,我希望每个SMP运行32*192个线程,或者2^5*(2^7+2^6),或者4096+2048=6142


我错过了什么

我认为您应该更深入地了解cuda中的内核调度

有两种重要的大小:每个块的线程

每个都安排在一个SM上,然后在那里切片为扭曲。 因此,块具有共享内存,该内存只能在块内部访问, 因为它位于SM内存中。每个SM的块数取决于设备限制和占用率计算。对于CC 1.0-2.x,每个SM的最大块数为8,对于CC 3.x,每个SM的最大块数为16

每个每个块都有一定数量的线程。线是分开的 进入扭曲,扭曲只能按扭曲确定的任意顺序运行- 调度器在SM中运行

现在,您的卡在2条短信上总共有384个核心,每个短信有192个核心。CUDA核心计数表示每个周期可执行的单精度浮点或整数线程指令总数。不要在任何计算中考虑CUDA核心。

最大线程数因计算能力而异。如果有足够的寄存器和扭曲插槽,CC2.0-3.x支持每个块最多1024个线程。扭曲被静态分配给扭曲调度器。对于CC1.x,每个SM的warp调度程序数为1,对于CC2.x,为2,对于CC3.x,为4

如果应用程序没有执行并发内核,那么要使用每个SM,gridDim应该具有>=个SM块

为了让GTX650m充分利用您的计算能力,您应该至少有两个块(否则为一个)
块(您只能使用一个SM)。另一方面,如果您想调度10240个线程,您可以轻松地调度10块1024个线程。

谢谢。我想我错过了翘曲的时间安排。