如何使用并行nsight在visual studio 2010中调试cuda推力函数

时间:2012-11-15 09:41:16

标签: visual-studio-2010 cuda thrust nsight

我正在使用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调试时,总会出现“断点没有源对应”的错误。

所以,我的问题是:

  1. 如何使用并行nsight在visual studio中调试cuda推力程序?
  2. 或者有没有人可以用另一种方式指导我知道cuda推力dipatch如何起作用于cuda内核或其他功能?
  3. 任何建议将不胜感激!

1 个答案:

答案 0 :(得分:2)

通常,要在CUDA中调试设备代码,必须通过:

-G -g

切换到nvcc。但是这种方式是not supported with thrust code。您可以通过遵循推力包含文件中的结构来了解推力代码如何被分派到设备。由于推力是完全模板化的代码,因此无需担心库。然而,这是一个具有挑战性的主张。您还可以告诉编译器生成ptx:

-ptx

是cuda代码编译到的one of the intermediate code types。然而,要解析这也不是一件小事。 This link提供了一些使用Thrust进行调试的替代方法。