2

我有一个 cpp 函数(function.cpp”),我“mex”-ed。然后我在 Visual Studio 中打开 function.cpp 文件并将 Visual Studio 附加到正在运行的 matlab 进程。

当我在 matlab 中调用该函数时,我可以在 function.cpp 文件中设置断点并逐步观察变量。

当我将函数更改为 cuda 文件 (function.cu) 时,调试过程会中断。按照上述过程,我仍然可以在 function.cu 内停止,但我看不到任何变量。当我尝试“观察”一个变量时,它显示“错误符号..未找到”

我在visual studio中安装了nsight。问题:我如何在调试模式下观察文件 function.cu 中的变量,就像我对 function.cpp 文件所做的那样。这可能吗 ?

请注意,function.cu 不在项目中。它只是一个带有函数 cpp 代码的独立文件(比如 somefunction(){})。出于调试目的,我在 Visual Studio 中打开它。我正在使用“nvmex -g wrapper.cu”在 matlab 中编译 function.cu 文件 wrapper.cu 是一个 matlab mexfunction 包装器,它调用写在 function.cu 中的 somefunction()

4

3 回答 3

1

您使用的是主机调试器 VS 调试器,因此它不知道如何调试设备程序。要在 Windows 中调试设备代码,您应该查看Parallel Nsight Visual Studio Edition

您可以在文档中搜索附加到正在运行的进程的指南,对于当前版本 (2.2),特定页面在此处

于 2013-01-18T11:42:24.437 回答
0

您附加了 VS,但在函数“main”中停止。看起来您仍在访问 CPU 代码。当您按照 Tom 的建议附加调试器时,您是否在 Transport 下拉列表中选择了“NVIDIA GPU Debugger”?

于 2013-01-21T01:20:23.950 回答
-2

要调试任何 cuda 代码,您需要一个没有运行桌面环境/服务器的 gpu。对于 Windows,这意味着您需要第二个 gpu。我不能 100% 确定它是否也必须是 nvida gpu。比你可以bedubg你的代码。在 linux 下,您只能使用一个 gpu 进行调试,因为您可以关闭 x-server 并在每个命令行中使用 cuda-gdb 进行调试。更多信息将为您提供cuda-gdb 手册

于 2013-01-17T21:11:58.150 回答