嘿 我正在使用带有CUDA 3.2的Visual Studio 2008。我正在尝试使用此签名调试函数:
MatrixMultiplication_Kernel<<<dimGrid, dimBlock>>>(Md, Nd, Pd, Width);
我可以进入该功能,但是当我进入该功能时,它不会让我跨过任何代码并告诉我没有可用的源。有人知道如何正确调试吗?
谢谢!
答案 0 :(得分:12)
您现在可以使用NSight在只有一个GPU的单台计算机上进行调试。
我以为我会更新这个,因为以前的答案不再正确(你不再需要2个GPU)并且它在错误的方向上发送了一段时间。
答案 1 :(得分:6)
更新: 并行Nsight现已免费,只支持系统中只有一个GPU进行调试。
要在Visual Studio中调试设备代码,您需要Parallel Nsight。标准版本免费,提供您需要的调试以及设备代码分析。
如果你想在一台机器上进行调试,那么你将需要两个GPU(因为运行代码的GPU在遇到断点时会被停止,因此你的显示器也会被阻塞)。它们不需要是高端GPU,G92以后的任何东西都可以(包括列出here列出的大多数Fermi GPU)。
答案 2 :(得分:1)
您使用的是Nsight吗? Vanilla Visual Studio无法进入设备代码,但使用Nsight,这是可能的。不幸的是,Windows设备驱动程序模型的限制意味着存在一些严重的限制。以前需要两台机器来进行调试。目标机器将在其GPU上运行CUDA代码,并且必须使用TCC驱动程序。主机将运行Visual Studio并控制目标。现在似乎可以在同一台机器上调试CUDA代码,只要你有两个GPU,一个用于计算,一个用于显示。 user guide中提到了许多其他问题。
这可能不是一个可接受的答案,但是:如果您可以在Linux上编译代码,则可以使用cuda-gdb来调试内核。 cuda-gdb是Linux CUDA工具包的一部分。
答案 3 :(得分:-4)
您无法使用visual studio调试CUDA内核代码。 Visual Studio只能调试在CPU上运行的程序。
事实上,我认为你不能再在Windows中调试CUDA内核代码了。 CUDA曾经有一个主机仿真模式,但在3.0中删除了。唯一可用的调试工具是cuda-gdb和ocelot,据我所知,它们都不支持Windows。