【问题标题】:How to debug cuda thrust functions in visual studio 2010 with parallel nsight如何使用并行 nsight 在 Visual Studio 2010 中调试 cuda 推力功能
【发布时间】:2011-11-29 16:23:44
【问题描述】:

我正在使用 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());

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

所以,我的问题是:

  1. 如何在 Visual Studio 中使用并行 nsight 调试 cuda 推力程序?
  2. 或者有没有人可以指导我使用另一种方式来了解 cuda 推力 dipatch 如何作用于 cuda 内核或其他功能?

任何建议将不胜感激!

【问题讨论】:

    标签: visual-studio-2010 cuda thrust nsight


    【解决方案1】:

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

    -G -g
    

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

    -ptx
    

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

    【讨论】:

    • 谢谢罗伯特,我已经阅读了关于调试的推力维基。但我认为它的内容对我的问题不是很有用。我只想知道推力库中决策过程的细节。所以我试图阅读源代码,也可能尝试阅读 ptx 代码。谢谢!
    猜你喜欢
    • 2013-12-13
    • 2012-04-26
    • 2012-10-05
    • 2012-03-17
    • 2016-12-31
    • 1970-01-01
    • 2012-04-17
    • 2012-07-30
    相关资源
    最近更新 更多