Visual studio 如何使用VisualStudio2008调试CUDA内核代码?

Visual studio 如何使用VisualStudio2008调试CUDA内核代码?,visual-studio,debugging,cuda,Visual Studio,Debugging,Cuda,哎,, 我正在使用VisualStudio2008和CUDA3.2。我正在尝试调试到具有以下签名的函数: MatrixMultiplication_Kernel<<<dimGrid, dimBlock>>>(Md, Nd, Pd, Width); MatrixMultiplication\u内核(Md、Nd、Pd、Width); 我可以进入函数,但是当我进入函数时,它不会让我跳过任何代码,并告诉我没有可用的源代码。有人知道如何正确地调试到这一点吗 谢谢大

哎,, 我正在使用VisualStudio2008和CUDA3.2。我正在尝试调试到具有以下签名的函数:

 MatrixMultiplication_Kernel<<<dimGrid, dimBlock>>>(Md, Nd, Pd, Width);
MatrixMultiplication\u内核(Md、Nd、Pd、Width);
我可以进入函数,但是当我进入函数时,它不会让我跳过任何代码,并告诉我没有可用的源代码。有人知道如何正确地调试到这一点吗


谢谢大家!

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


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

您在使用什么?Vanilla Visual Studio无法进入设备代码,但使用Nsight,这是可能的。不幸的是,Windows设备驱动程序模型的局限性意味着存在一些严重的限制。过去需要两台机器来进行调试。目标机器将在其GPU上运行CUDA代码,并且必须使用TCC驱动程序。主机将运行VisualStudio并控制目标。现在似乎可以在同一台机器上调试CUDA代码,只要有两个GPU,一个用于计算,一个用于显示。报告中还提到了许多其他问题

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

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

要在VisualStudio中调试设备代码,您需要。标准版本是免费的,提供您需要的调试和设备代码分析


如果要在一台机器上调试,则需要两个GPU(因为运行代码的GPU在遇到断点时会停止,因此显示也会阻塞)。不过,它们不需要是高端GPU,G92以后的任何产品都可以(包括列出的大多数费米GPU)。

您现在可以在一台机器上使用一个GPU进行调试


我想我会更新这个,因为以前的答案不再正确(你不再需要2个GPU),它让我在一段时间内走错了方向。

这是不正确的。NVIDIA Parallel Nsight可用于设备调试。“现在,只要您有两个GPU,一个用于计算,一个用于显示,就可以在同一台机器上调试CUDA代码。”。两者都必须是G92或GT200。(比如说,费米470/480已经出局了。)这说明了CUDA用户的百分比是多少?不幸的是,CUDA的技术局限性以及CUDA真正存在的时间并不长,这意味着只有那些财力雄厚的人才能进行这种调试。其余部分必须采用其他方法。有关支持的GPU,请参阅此列表:。费米470/480在1.5版本中受支持。的确,您需要两个GPU(否则会在断点上阻塞显示),但它们不需要是高端的,入门成本相当低!你可以在一个GPU上调试它,如果你不使用X或者SM3.5,我有两个特斯拉C1060卡。我正在为我的实验室建造一台GPU机器,我将在Linux上运行它。因此,根据您的评论,如果我想使用CUDA gdb,我需要一个额外的图形卡(可能在板上)运行display/X-server?谢谢,CUDA-GDB也是这样吗?