Cuda 执行SM';如图所示;占用率图“;与'blockIdx.x'或寄存器'%smid'相对应?

Cuda 执行SM';如图所示;占用率图“;与'blockIdx.x'或寄存器'%smid'相对应?,cuda,nvprof,Cuda,Nvprof,“占用图”中显示的SM是否对应于blockIdx.x或寄存器%smid 下面是这样一个图表的示例 下面是我将块idx.x打印为“逻辑”块,将寄存器%smid(通过汇编访问)打印为物理块时的一些示例输出 running on logical Block 77 and Physical SM 75 running on logical Block 31 and Physical SM 62 running on logical Block 37 and Physical SM 74 running

“占用图”中显示的SM是否对应于
blockIdx.x
或寄存器
%smid

下面是这样一个图表的示例

下面是我将
块idx.x
打印为“逻辑”块,将寄存器
%smid
(通过汇编访问)打印为物理块时的一些示例输出

running on logical Block 77 and Physical SM 75
running on logical Block 31 and Physical SM 62
running on logical Block 37 and Physical SM 74
running on logical Block 74 and Physical SM 69
running on logical Block 66 and Physical SM 53
running on logical Block 45 and Physical SM 11
running on logical Block 43 and Physical SM 7
<snip>
在逻辑块77和物理块75上运行
在逻辑块31和物理SM 62上运行
在逻辑块37和物理块74上运行
在逻辑块74和物理块69上运行
在逻辑块66和物理SM 53上运行
在逻辑块45和物理SM 11上运行
在逻辑块43和物理SM 7上运行
此外,我可以预测每个块执行需要多长时间,而块~30和~31预计不会花费很长时间——即使它们在图表上显示为需要很长时间。我“预测”的一些块需要“短时间”,比“短时间”要长,如图所示。因此,逻辑块和持续时间之间似乎不匹配,如图所示

最后,如果在图中使用术语“SM”,我希望该图表示物理SMID,而不是逻辑块号

鉴于这三条证据,我怀疑图表中显示的数字对应于寄存器
%smid


我只想确认一下。一旦我完全理解了这个问题,我就有理由在现有的80个块之间更好地分配工作,或者从使用更多块开始。谢谢

引用罗伯特·克罗维拉的话:


图形的水平轴对应于寄存器%smid。性虐待 =流式多处理器。您可以通过运行80多个块并观察显示的图形不显示来快速确认这一点 在水平轴上超过0..79继续


对于旁观者来说,检索smid的一些代码是
\uu device\uuuuuu static unsigned int get\u smid(void){unsigned int ret;asm(“mov.u32%0,%smid;”:“=r”(ret));return ret;}
图形的水平轴对应于寄存器
%smid
。SM=流式多处理器。您可以通过运行80多个块并观察显示的图形在水平轴上没有超过0..79来快速确认这一点。第四个很好的理由是@robertcrovella。如果你把你的评论转换成回答,我会接受的。谢谢