问两个问题~求大神斑竹帮忙

1/ 我在核函数里面定义了定长的数组a[8],如何了解在运行时该数组是分配到了寄存器,还是本地存储器?
2/ 通常release 和debug两种调试方法速度不一样,但它们会影响GPU上的运行时间嘛?
我利用的在主机端运行时api测时和用clock()测时,发现,都是在release下核函数(同步后测时的)时间更短。
:2_34:

楼主您好,

(1)对于您的一个普通没有调用__device__函数的kernel来说,
一般您可以这样操作:

您可以首先启用贵.cu右键属性里的ptxas verbose output选项的,
然后将VS的build log改成“详细”,
然后再执行一次rebuild all,
然后您将在您的vs的build log窗口中看到如下字样:
0 bytes stack frame, xxx bytes spill stores, xxx bytes spill loads
或者nnn bytes stack frame, …
如果您发现的nnn是0, 则证明它在寄存器上,反之则在local memory上。

(2)这个问题。。。。您觉得需要回答么?
如果非要回答,答案如下:
首先说,release和debug版本的速度的确不一样,
其次,debug版本的kernel测试运行时间毫无意义。
–供您参考。

谢谢斑竹~
我的显示:
72 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
Used 32 registers, 7780 bytes smem, 44 bytes cmem[0], 20 bytes cmem[16]
看来是在local mem里面了。。。
斑竹,后面的“44 bytes cmem[0], 20 bytes cmem[16]”什么意思啊?为什么会有两个constant mem?

后面2个是constant cache的不同banks, 此部分资料暂时不公开,请无视。