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

Mil*_*les 5 cuda visual-studio-2010 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());
Run Code Online (Sandbox Code Playgroud)

我想知道如何将sort函数分配给cuda内核,所以我尝试在上面的行前面添加断点并在调试模式下编译项目.但是当我使用并行nsight进行cuda调试时,总会出现"断点没有源对应"的错误.

所以,我的问题是:

  1. 如何使用并行nsight在visual studio中调试cuda推力程序?
  2. 或者是否有人可以指示我使用另一种方式来了解cuda推力dipatch功能如何cuda内核或其他功能?

任何建议将不胜感激!

Rob*_*lla 3

通常,要在 CUDA 中调试设备代码,需要传递:

-G -g
Run Code Online (Sandbox Code Playgroud)

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

-ptx
Run Code Online (Sandbox Code Playgroud)

这是 cuda 代码编译到的中间代码类型之一。然而,这也不是一件容易解析的事情。 此链接提供了一些使用 Thrust 进行调试的替代想法。