首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新手,想用Nisight调试CUDA代码,但断点无效怎么破?

新手,想用Nisight调试CUDA代码,但断点无效怎么破?

作者头像
GPUS Lady
发布2018-04-24 15:05:48
2.6K0
发布2018-04-24 15:05:48
举报
文章被收录于专栏:GPUS开发者GPUS开发者

新手,刚接触CUDA编程,搭好了环境,想用nsight来调试,在vs里面,在核函数里面设置了断点,用CUDA Debugging,但断点就是不生效,电脑左下角会弹出Night 连接成功,程序跑完后,Night会提示Disconnected 整个电脑环境: 显卡: GF GTX1050

CPU: i3-4170 3.70GH

硬盘: 2T 软件:VS2013 + CUDA9.1 + Nsight 5.4

GPU世界论坛 bbs.gpuworld.cn

Hi, 楼主, 这个有多种可能的, (1)你的断点所在的行,不能被kernel启动的任何一个线程命中,自然断点不会生效。 这包括kernel在断点之前就已经执行结束, 或者断点处于某些if, while, for之类的里面,需要一定的条件才能执行到。 (2)kernel启动没有成功,例如你如果要求了2048个线程的block形状,此形状无法被目前的任何计算能力设备所满足,kernel无法执行该要求下的任何代码。自然无法命中。 建议的解决方案: (1)检查断点的位置,它需要至少能有一个线程执行到这里。 (2)检查kernel启动是否成功,请立刻在<<<>>>符号的下一行处,执行一次cudaGetLastError(), 看看它是否返回成功。 (3)考虑到很多时候之前就挂掉了是因为访存,你应当在启动CUDA Debugging的时候,勾选“enable CUDA memory checker", 否则很多情况下,kernel提前就会挂掉,执行不到断点所在行的。 (4)其他的小方面,例如使用debug编译之类的,你应当知道并已经做了,这里就不说了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档