我正在使用visual studio 2010,并行nsight 2.2和cuda 4.2进行学习。我的系统是Windows 8专业版x64。 我在VS中打开了由cuda计算SDK包含的基数排序项目,并编译它没有错误。排序代码使用推力库:
if(keysOnly)
thrust::sort(d_keys.begin(), d_keys.end());
else
thrust::sort_by_key(d_keys.begin(), d_keys.end(), d_values.begin());
我想知道如何将sort函数调度到cuda内核,所以我尝试在上面的行前面添加断点并在调试模式下编译项目。但是当我使用并行nsight进行cuda调试时,总会出现“断点没有源对应”的错误。
所以,我的问题是:
任何建议将不胜感激!
答案 0 :(得分:2)
通常,要在CUDA中调试设备代码,必须通过:
-G -g
切换到nvcc。但是这种方式是not supported with thrust code。您可以通过遵循推力包含文件中的结构来了解推力代码如何被分派到设备。由于推力是完全模板化的代码,因此无需担心库。然而,这是一个具有挑战性的主张。您还可以告诉编译器生成ptx:
-ptx
是cuda代码编译到的one of the intermediate code types。然而,要解析这也不是一件小事。 This link提供了一些使用Thrust进行调试的替代方法。