分析cuda程序优化方法

问题我已解决,我的解决方式如下:(希望给和我一样遇到同一问题的新人一些启示)
1.在debug配置下和release配置下的确全都编译成功了,但vs2012中的project里的对应项目文件的debug和release文件下是没有.exe的.
2.我通过win+F去寻找项目文件名.exe,找到是在vs2012下的bin文件里的win32下的debug和release下
3.通过命令窗口打开所在位置,并运行,是运行不通的,我就将两个配置下的.exe复制到了vs2012 里project文件中项目文件的debug和release文件下。
3.打开命令窗口,运行在此目录下的.exe文件
4.成功

ICE您好:
回忆之前说的寄存器使用问题,横扫千军版主说在-O2下是没区别的,在vs下也就是release下是没区别的,经过亲身实践,的确时间方面是没有区别的。但我注意到local memory store\load throughput,产生了几点疑问:
1.首先在debug配置下编译调试成功(我一般是通过vs2012本地windows调试器下直接运行,编译调试是在一起的,导致编译调试没分清楚的笑话,希望版主见谅)下,通过profiler测试测得申明数组(16个元素)版本的程序的local memory store\load throughput不为0,内核函数运行时间也较长;申明多个(16个)变量代替数组的local memory store\load throughput全为0.内核函数运行时间也较短。
2.其次在release配置下,编译成功下,通过profiler测试测得两个版本时间是一样的,内核函数运行时间也大大缩短,但是两个程序的local memory store\load throughput都不为0了,这就让我有点糊涂了,请ICE版主能为我解惑。

楼主您好:

(1)debug下的profiling结果无任何含义。您应当直接忽略这个。
(2)release下一般比Debug下快的多。因为开启了优化+去掉了调试信息。
(3)使用local memory与否与速度无直接关系。一个使用了local memory的kernel可能比调整编译参数后不使用local memory的要快或者更慢,无直接关系的(所以我们常说是否真的要调高或者调低寄存器占用以规避local memory与否无定论,要看实际调的结果。不一定寄存器用的更多或者更低就一定更快或者更慢)。而您这里感觉到的速度快主要是release版本的缘故罢了。

感谢来访。

谢谢版主:)