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

Visual studio 2010 如何在VisualStudio2010中使用并行nsight调试cuda推力函数,visual-studio-2010,cuda,thrust,nsight,Visual Studio 2010,Cuda,Thrust,Nsight,我正在使用visual studio 2010、并行nsight 2.2和cuda 4.2进行学习。我的系统是Windows 8 pro 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()

我正在使用visual studio 2010、并行nsight 2.2和cuda 4.2进行学习。我的系统是Windows 8 pro 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());
我想知道如何将排序函数分派到cuda内核,所以我尝试在上面的行前面添加断点,并在调试模式下编译该项目。但当我使用parallel nsight进行cuda调试时,总会出现一些错误,即断点没有源对应关系

因此,我的问题是:

如何在visual studio中使用并行nsight调试cuda推力程序? 或者有没有人可以指导我使用另一种方法来了解cuda如何将dipatch函数推送到cuda内核或其他函数?
任何建议都将不胜感激

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

-G -g
切换到nvcc。然而,这一模式是可行的。通过遵循推力包含文件中的结构,您可以了解推力代码是如何被分派到设备的。因为推力是完全模板化的代码,所以不需要担心库。然而,这是一个具有挑战性的命题。您还可以告诉编译器生成ptx:

-ptx

这就是cuda代码编译的目的。然而,这也不是一件小事。提供了一些使用推力进行调试的备选方案。

谢谢你,罗伯特,我已经阅读了有关调试的推力维基。但我认为它的内容对我的问题不是很有用。我只想知道推力库中决策过程的细节。所以我试图阅读源代码,也可能尝试阅读ptx代码。非常感谢。