当CUDA程序执行后没有反应.....

有一天,QQ群里有人求助,说CUDA程序执行后没有反应!!

不过这个问题太常见了,经常被问及到

面对这个情况,让我们来说说

CUDA调试正确的打开方式!

1

请依次逐API返回值进行检查,看看他们是否是cudaSuccess

2

如果全部返回都是成功,则可以继续使用nsight进行kernel调试。

kernel调试请使用debug配置编译(默认含有-g), 然后在你的kernel的 开头,用鼠标左键下一个普通断点,然后通过nsight菜单->Start CUDA Debugging。

3

开始检查你kernel的到的参数是否正常。如果有错误的,则你需要重新检查参数的传递。

如果所有参数的传递都正确。 则你的kernel可能存在逻辑BUG。 这就需要耐心慢慢的找了。

4

如果错误是出现在,例如回传的时候, 则往往可能是上一步的kernel出现异步错误(如果你用的是同步cudaMemcpy的话)。此时依然需要检查kernel的。(例如,出现Unspecified Launch Failure, 或者cudaErrorUnknown, 或者具体性的kernel出错)

5

常见的是返回: cudaError Launch Failure。这个时候需要用nsight检查kernel的,往往是越界或者下标错误。只需要在nsight菜单里打开memory checker,然后启动CUDA调试。越界的时候会自动告诉你位置的。

希望这些经验对您调试CUDA代码带来帮助!

原文发布于微信公众号 - 吉浦迅科技(gpusolution)

原文发表时间:2016-09-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程直播室

编程星球——水·滴20180624期

1513
来自专栏圆方圆学院精选

【刘文彬】【精解】EOS TPS 多维实测

原文链接:醒者呆的博客园,https://www.cnblogs.com/Evsward/p/eostps.html

1192
来自专栏Python研发

Autopep8的使用

在python开发中, 大家都知道,python编码规范是PEP8,但是在市级开发中有的公司严格要求PEP8规范开发, 有的公司不会在乎那些,在我的理解中,程序...

2135
来自专栏iOS技术

YYCache 源码剖析:一览亮点

YYCache 作为当下 iOS 圈最流行的缓存框架,有着优越的性能和绝佳的设计。笔者花了些时间对其“解剖”了一番,发现了很多有意思的东西,所以写下本文分享一下...

4455
来自专栏熊二哥

快速入门系列--MVC--05行为

    Action执行包含内容比较多,主要有同步/异步Action的概念和执行过程,Authorationfilter, ActionFiltor, Resu...

1977
来自专栏智能大石头

改进版CodeTimer及XCode性能测试

在测试XCode性能的时候,发现每次执行测试程序得到的执行时间差距实在太大,于是采用了老赵的CodeTimer来计算线程时间,后来因为测试程序稍微有点复杂,在使...

3047
来自专栏小狼的世界

Crontab中的除号(slash)到底怎么用?

crontab 是Linux中配置定时任务的工具,在各种配置中,我们经常会看到除号(Slash)的使用,那么这个除号到底标示什么意思,使用中有哪些需要注意的地方...

912
来自专栏IMWeb前端团队

Flash as3 socket编程入门

什么是socket? 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求...

21310
来自专栏青青天空树

MIME协议在邮件中的应用详解

  全称是多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions),在MIME出台之前,使用RFC 822只...

1561
来自专栏小灰灰

RabbitMQ基础教程之基本使用篇

1772

扫码关注云+社区

领取腾讯云代金券