用户
 找回密码
 立即注册
发表于 2013-9-26 09:36:34
玫瑰幻想 发表于 2013-9-25 19:32
我在前文已经对指出了三点:

(1)是否成功设置了断点

我再也无法忽视您提出的三点了。经过昨晚的多次测试,我认为之所以我一启动cuda debugging就退出,原因正是您所提的第3点。理由如下:
1、对于任意经过测试正确的程序,都不能调试,一启动就自动退出。从运行的结果来看,每次都是固定的一串很长的数,显然是没有成功进入kernel.
2、运行deviceQry显示没有任何支持CUDA的设备。(已经按user guide在monitor里面设置了一大堆false ture)
3、我把12#图片所示bios界面设置回默认的pci/pcie,并把显示器接回独显,运行deviceQry可成功检测到我的GTX650,并且以前经正确测试的程序可以正常运行。
请问:
为什么显示器接到独显之后就会检测不到我的独立显卡?我接下来应该从什么地方入手呢?
使用道具 举报 回复 支持 反对
发表于 2013-9-26 10:26:05
翊君 发表于 2013-9-26 09:36
我再也无法忽视您提出的三点了。经过昨晚的多次测试,我认为之所以我一启动cuda debugging就退出,原因正 ...

LZ您好:

您在使用nsight调试之前显然应该保证您的环境中有合适的可识别的显卡以便您的CUDA程序能够顺利执行的。

在此,直接提供一个简单的方法:请您直接把显示器接在您的独显上使用,无需打开集显,现在nsight单机调试已经不要求使用双卡了。这一点建议在2#中已经指出过。如此可以使您尽快进入状态,而不是纠结各种集显的配置问题。

至于使用集显会找不到独显的问题,这个各个主板的情况可能不同。比如我这里就可以让独显和集显同时工作,但是并不保证您那里也这样。如果您还打算继续尝试使用集显,那么1:您可以在BIOS中寻找是否有强制同时开启集显和独显的选项;2:给独显插上显示器把桌面扩展过去,以免独显因为节能等原因不被识别。

以上建议并不保证一定能解决您“用集显显示,用独显计算”的问题,仅供参考。
详细讨论和试验主板的独显,集显使用逻辑策略已经超出了本版的讨论范围,将不再继续这一问题的讨论。

祝您好运~
使用道具 举报 回复 支持 反对
发表于 2013-9-26 22:16:58
ice 发表于 2013-9-26 10:26
LZ您好:

您在使用nsight调试之前显然应该保证您的环境中有合适的可识别的显卡以便您的CUDA程序能够顺利 ...

按您说的,换的单独一张独显来调试了,果然可以调试。但是又有新问题,弄了一天没解决。
用例子里的matrixMul.cu可以成功调试,可以在核函数里断下来,并查看线程和变量等等。
但是我自己的程序就不行了,无论如何也不能在核函数里停下来。一启动调试程序就会运行,然后运行的结果一闪就自动退出了调试。我确定程序本身没问题,因为正常执行的时候是对的。换了其它我自己的程序调试也是一闪就自动退出了。
程序如和断点如下。不知道是因为我有什么关键地方没设置好还是什么原因呢?


另外,我想问一下什么叫-G,我在本论坛里看到有提到-G,手册里也有讲到-G

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用道具 举报 回复 支持 反对
发表于 2013-9-26 22:33:20
翊君 发表于 2013-9-26 22:16
按您说的,换的单独一张独显来调试了,果然可以调试。但是又有新问题,弄了一天没解决。
用例子里的matri ...

LZ您好:

看您的截图,这段代码应该就是CUDA 工程模板建立工程以后自带的示例代码。
一般说这个代码是不会有问题的,您的断点也在kernel内部,以及您应该是启动了nsight调试。

那么请您检查一下您的编译类型是不是debug类型,如果是的话,那么您的-G参数会自动加上的,以及您应该可以停在kernel内部。

祝您好运~
使用道具 举报 回复 支持 反对
发表于 2013-9-26 22:44:53
ice 发表于 2013-9-26 22:33
LZ您好:

看您的截图,这段代码应该就是CUDA 工程模板建立工程以后自带的示例代码。

以及补充一下,经过我和横扫斑竹讨论,觉得您这个情况还有可能是CUDA Toolkit,CUDA computing SDK,nsight版本混杂引起的。

比如您机器上安装了老版本的CUDA Toolkit,老版本的CUDA Computing SDK,新版本的CUDA Toolkit,和老版本的nsight。

此时,老版本的CUDA Computing SDK中的例子可能调用了老版本的CUDA Toolkit进行了编译,以及此时老版本的nsight是可以调试的。

但同时新版本的CUDA Toolkit自带的模板建立的CUDA 工程是用新版本的CUDA Toolkit编译的,此时nsight无法配合与之工作。

如此有可能重现您的问题。

解决方案是:建议您重装最新版本的nsight,目前最新版本是nsight3.1。如果还不行,请您卸载您机器上的老的CUDA Toolkit和CUDA Computing SDK,安装最新的CUDA Toolkit 5.5,如果需要参考示例,请安装和CUDA 5.5配套的CUDA Samples 5.5(这个就是以前的computing SDK)

大致如此,供您参考。

祝您好运!
使用道具 举报 回复 支持 反对
发表于 2013-9-27 09:05:21
本帖最后由 翊君 于 2013-9-27 09:07 编辑

我还发现,只有Nsight里自带的那个matrixMul.cu可以调试,CUDA sample里的matriMul.cu竟然不能调试,而两边设的断点位置是相同的。

通过观察发现,调试的时候应该是可以进入kernel的,只是停不下来。因为有下图的提示

我的配置是CUDA 5.0, VS2008sp1,Nsight3.0.版本已经不低了吧?我现在去下载CUDA5.5和VS2010,Nsight就不用换了吧。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用道具 举报 回复 支持 反对
发表于 2013-9-27 10:31:53
翊君 发表于 2013-9-27 09:05
我还发现,只有Nsight里自带的那个matrixMul.cu可以调试,CUDA sample里的matriMul.cu竟然不能调试,而两边 ...

LZ您好:

CUDA 5.0+VS2008SP1+NSIGHT3.0这个组合是可以的,换成VS2010也可以。
CUDA 5.5+VS2010SP1+NSIGHT3.1这个组合也是可以的,换成VS2010和VS2012也可以。

不过建议CUDA 5.5配合NSIGHT 3.1使用,而不要使用更低的版本。CUDA 5.0使用NSIGHT 3.0或者更高的3.1均可。

根据您第二张图的提示,请问您是否是按照debug模式编译的?请您确认一下。

目前尚无其他建议。

祝您好运~
使用道具 举报 回复 支持 反对
发表于 2013-9-27 11:00:47
ice 发表于 2013-9-27 10:31
LZ您好:

CUDA 5.0+VS2008SP1+NSIGHT3.0这个组合是可以的,换成VS2010也可以。

   




请问DEBGU编绎模式是在哪里设置呢?是上面三张图吗?设置第二张图的时候,生成会失败。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用道具 举报 回复 支持 反对
发表于 2013-9-27 13:58:02
翊君 发表于 2013-9-27 11:00
请问DEBGU编绎模式是在哪里设置呢?是上面三张图吗?设置第二张图的时候,生成会失败。
...

楼主您好,

的确是第二张图设置的。

如果您的项目在调试模式下编译失败,请查看是否使用了依赖一些调试宏的#if之类的代码块。
(建议楼主直接发在debug模式下的build log,然后论坛分析,这样对你我都好)

感谢来访。
使用道具 举报 回复 支持 反对
发表于 2013-9-29 10:25:56
横扫千军 发表于 2013-9-27 13:58
楼主您好,

的确是第二张图设置的。

实验发现,右击.cu文件设置28#中的图2编绎失败,右击解决方案设置28#中的图2可以编绎成功。成功之后依然不能调试,哎,我马上就要失去信心了。
我不知道什么叫调试宏啊。。。build log是指生成的时候输出窗口的提示吗?
我终于想到了一个好办法,既然Nsight自带的matrixMul.cu可以调试,我就把里面的程序全删了,把我自己的代码贴了进去,生成的过程中终于给出了一条重要提示
ptxas : error : Entry function '_Z11reconstructPfS_' uses too much shared data (0x18600 bytes, 0xc000 max)
原来是因为share mem装不下,我又重新分配了一下dimgrid和dimblock,成功进入调试状态!这样一来,正确的结果都出来了,我也没必要去调试了。。。
可是,我还是不知道为什么在Nsight自带的matrixMul.cu以外都不能调试。
请问ptxas是什么?
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册