Nsight调试CUDA程序忽略断点

感觉任何一个框架在上手时都要踩不少坑啊。这几天我就又踩了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.项目的路径不要有中文。




你可能感兴趣的:(c/c++)