CUDA主动变形与驻地变形

时间:2017-01-29 12:42:57

标签: c++ cuda gpu

CUDA中的占用率定义为

occupancy = active_warps / maximum_active_warps

常驻 CUDA扭曲和活跃之间有什么区别?

根据我对网络的研究,似乎一个块在整个执行期间驻留在SM上(即与其寄存器/共享内存文件一起分配)。与“活跃”有区别吗?

如果我的内核使用很少的寄存器和共享内存..这是否意味着我可以拥有maximum_active_warps驻留块并实现100%占用率,因为占用率取决于所使用的寄存器/共享内存量?

1 个答案:

答案 0 :(得分:2)

  

常驻CUDA扭曲与活动CUDA扭曲之间有什么区别?

在这种情况下可能没什么。

  

根据我对网络的研究,似乎一个块在整个执行期间驻留在SM上(即与其寄存器/共享内存文件一起分配)。与"活跃"?

有区别吗?

现在你已经从询问warp转向询问块。但同样,在这种情况下,你可以认为它们是相同的。

  

如果我的内核使用很少的寄存器和共享内存..   这是否意味着我可以拥有maximum_active_warps常驻块和   入住率仅取决于入住人数,因此实现100%入住率   注册/共享内存使用?

不,因为经线和块不是一回事。正如你自己引用的那样,占用率是根据经线而不是块来定义的。最大扭曲数固定为48或64,具体取决于您的硬件。最大块数固定为8,16或32,具体取决于硬件。有两个独立的限制是不一样的。两者都可以影响给定内核可以实现的有效占用率。