2013-01-17 33 views

回答

3

有个CUDA GPU占用率计算器,在CUDA的安装目录找到。

cuda-5.0/tools/CUA_Occupancy_Calculator.xls 

它可以显示为不同的GPU计算能力的物理极限硬件种源(线/块,寄存器,共享MEM)和经纱之间占用的的关系,以及。

4

快速回答:是的。 典型限制?如果您想要达到0.5左右的占用率,那么每个线程的寄存器大约为32-64个寄存器,具体取决于架构。

稍微长一点的答案: 请记住,寄存器的数量与“局部变量的数量”不完全相同。这是因为,在给定的时间,你通常不需要所有的局部变量,编译器会尝试重用寄存器。您可能最终将多个变量映射到同一个寄存器。其次,即使用完了寄存器空间,编译器也会尝试将这些值泄漏到很少使用的全局内存中。通常在你的代码中有很少的寄存器溢出并不是费时。此外,这些寄存器溢出导致完全对齐的全局内存访问模式。

如果您想知道每个内核正在使用多少寄存器和(溢出)本地内存,请将--ptxas-options=-v添加到您的编译参数中。