您的位置:首页 > 其它

Nsight调试CUDA程序忽略断点

2016-11-02 15:08 197 查看
感觉任何一个框架在上手时都要踩不少坑啊。这几天我就又踩了CUDA的一个坑。现记录于下,供有需要的人参考。

环境

win7 + CUDA7.5 + VS2012

问题描述

使用CUDA编程时,在核函数内设置断点,用Nsight进行调试。点击Nsight->start CUDA debugging后,Nsight忽视断点,直接执行。项目文件是老师给的例子,使用VS2013创建。

解决过程

先是百度、Bing、google一通找,尝试各种博客、stackoverflow、Nvidia 开发人员论坛里的方法,没有一个行得通。无奈之下只好仔细查看官方文档、按照文档指引进行设置,然而还是不行。问老师,答曰:不要用自己的项目进行调试,用官方文档中提到的Sample进行调试。尝试之,在Sample项目上果然能行。但回到自己的项目,又失败。仔细对比两个项目的项目属性,将自己项目的项目属性设置成与Sample项目一致,还是以失败告终。最后突发奇想,新建一个CUDA项目,把老师给的例子中的项目文件添加到新项目中,生成,调试,终于成功。

解决方案

不要使用VS版本不同的项目文件,使用当前VS版本的项目文件。(貌似可以向下兼容,但不能向上兼容。因为sample项目是VS2010创建的,使用CUDA Debugging没有问题。而老师给的项目是VS2013创建,CUDA Debugging出现问题。)

----------------------11.6更新----------------------------------

几个同学也遇到了Nsight忽视断点 的问题,但参照我的方法并不能成功。费了很大的劲才解决,现记录于下:

1.在属性->CUDA c/c++->Device中Code Generation一栏,填写适合自己显卡的compute 和 sm。我们的显卡都是GX850m,对应的是compute_50,sm_50。其余显卡可以上英伟达官网去查,或者运行samples中的matrixMul例子,它会告诉你你的显卡的计算能力。

2.项目的路径不要有中文。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cuda Nsight