2010-10-28 127 views
7

嘿, 我正在使用Visual Studio 2008和CUDA 3.2。我试图调试到功能与此签名:如何使用visual studio 2008调试到CUDA内核代码?

MatrixMultiplication_Kernel<<<dimGrid, dimBlock>>>(Md, Nd, Pd, Width); 

我可以进入的功能,但是当我进入功能,它不会让我跨过任何代码,并告诉我说没有源可用。任何人都知道如何正确调试到这个?

谢谢!

回答

6

更新:并行Nsight现在是免费的,并且只支持在您的系统中使用一个GPU进行调试。

要在Visual Studio中调试设备代码,您将需要Parallel Nsight。标准版本是免费并提供您需要的调试以及设备代码分析。

如果您想在单台机器上进行调试,那么您将需要两个GPU(因为运行代码的GPU在遇到断点时将停止工作,因此您的显示屏也会被阻止)。尽管他们不需要成为高端GPU,但是从G92开始的任何事情都可以做到(包括大多数费尔米GPU,如here)。

+0

CUDA-GDB也是如此吗? – Abhinav 2014-02-26 20:44:07

-4

您无法使用visual studio调试CUDA内核代码。 Visual Studio只能调试在CPU上运行的程序。

事实上,我不认为你可以在Windows中调试CUDA内核代码。 CUDA曾经有一个主机仿真模式,但在3.0版中被删除了。唯一可用的调试工具是cuda-gdb和ocelot,据我所知,它们都不支持Windows。

+1

这是错误的。 NVIDIA Parallel Nsight可用于设备调试。 – mch 2010-10-29 03:28:21

1

您使用的是Nsight? Vanilla Visual Studio不能进入设备代码,但使用Nsight,这是可能的。不幸的是,Windows设备驱动程序模型的局限性意味着有一些严重的限制。它曾经是要求两台机器进行调试。目标机器将在其GPU上运行CUDA代码,并且必须使用TCC驱动程序。主机将运行Visual Studio并控制目标。现在似乎可以在同一台机器上调试CUDA代码,只要您有两个GPU,一个用于计算,另一个用于显示。在user guide中提到了一些其他问题。

这可能不是一个可以接受的答案,但是:如果您可以在Linux上编译代码,则可以使用cuda-gdb来调试内核。 cuda-gdb是Linux CUDA工具包的一部分。

+0

“现在可以在同一台机器上调试CUDA代码,只要您有两个GPU,一个用于计算,另一个用于显示。”究竟。两者都必须是G92或GT200。 (所以,例如,Fermi 470/480就不存在了。)CUDA用户中描述的百分比是多少? – user434507 2010-10-29 03:40:38

+0

不幸的是,技术上的局限性和CUDA并没有真正围绕这一点的事实意味着只有那些拥有雄厚实力的人才能进行这种调试。其余的必须采取其他方法。 – mch 2010-10-29 04:02:28

+1

请参阅此列表了解支持的GPU:http://developer.nvidia。COM /对象/ nsight-requirements.html。 Fermi 470/480在1.5版本中得到支持。确实,你需要两个GPU(否则你会在断点处阻止你的显示器),但它们不需要是高端的,输入成本相当低! – Tom 2010-10-30 18:15:07

12

您现在可以使用NSight在仅使用一个GPU的单台机器上进行调试。

以为我会更新这个,因为之前的答案不再正确(你不再需要2个GPU)并且它在一段时间内让我误入歧途。

+1

只有在不使用X或具有SM3.5的情况下,才可以在一个GPU上调试它[source](http://docs.nvidia.com/cuda/cuda-gdb/index.html#single-gpu-调试与桌面管理器运行) – janisz 2013-08-29 20:43:20

+0

我有两个特斯拉C1060卡。我正在为我的实验室构建GPU机器,并且我将在Linux上运行它。因此,根据您的评论,如果我想使用CUDA-gdb,我需要额外的显卡(可能在显卡上)运行显示器/ X服务器? 谢谢 – Abhinav 2014-02-26 20:58:36