Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2010 调试CUDA内核时无法解析名称_Visual Studio 2010_Cuda - Fatal编程技术网

Visual studio 2010 调试CUDA内核时无法解析名称

Visual studio 2010 调试CUDA内核时无法解析名称,visual-studio-2010,cuda,Visual Studio 2010,Cuda,我无法调试CUDA内核。某些变量无法在调试器中计算。经过大量的调查和简化项目和代码后,我有了一个非常简单的项目,其中包含了对DLL中宿主函数的主要应用程序调用,其中包含了对内核的调用。 使用Visual Studio的项目向导实际创建的内核代码。 此外,我还有空的.cu文件。当它包含在构建中时,我有一个问题。 当此文件从生成中排除时-一切正常。 带空文件的dll调试版本大小为92 kb,不带90 kb 我的设置是 Windows 7 Pro x64 VS2010专业版 NVIDIA Nsight

我无法调试CUDA内核。某些变量无法在调试器中计算。经过大量的调查和简化项目和代码后,我有了一个非常简单的项目,其中包含了对DLL中宿主函数的主要应用程序调用,其中包含了对内核的调用。 使用Visual Studio的项目向导实际创建的内核代码。 此外,我还有空的.cu文件。当它包含在构建中时,我有一个问题。 当此文件从生成中排除时-一切正常。 带空文件的dll调试版本大小为92 kb,不带90 kb

我的设置是 Windows 7 Pro x64 VS2010专业版 NVIDIA Nsight VS版本3.2.2 CUDA SDK 5.5
NVIDIA driver 331.82

尽管这个问题被否决,但我也遇到了同样的问题,经过一点调查后发现,当我将“配置属性| CUDA C/C++|公共|生成可重定位设备代码”设置为“是”时,这对我来说非常关键。将其设置为“否”解决了问题,尽管我不知道为什么。

最终我找到了问题的根源和解决方法。 当解决方案复杂且包含多个cpp和cu文件时,就会出现问题。 因为这需要“可重定位设备代码”。否则GPU代码不能被分割成几个CU文件

当CU文件不包含任何GPU代码(也称为
\uuuu设备\uuuu
功能)时,调试信息被破坏。 因此,解决方法是在此类CU文件中添加虚拟函数:

__device__ void dummy1()
{
}

你的问题是什么?我只看到你的问题清单?另外,请提供更多的信息,例如您的简单项目。我的问题是调试代码。如果不调试代码和计算变量,我就无法继续我的项目。我可以共享完整的解决方案(5kb zip中有12个文件)。谷歌硬盘的链接可以吗?不要在你的问题中加入外部链接。当这些链接失效时,这个问题对未来的读者来说就没用了。取而代之的是,把你的问题提炼成一些简短的、可以完全贴在问题上的东西。在进行此缩减的过程中,您可能会自己发现问题或关键问题。我从解决方案开始,包括5个项目和大约400个文件。另外,空文件最初包含代码。我将有问题的项目与向导创建的项目进行了比较,没有发现任何差异。我不明白空源文件是如何将二进制文件增加2K并破坏调试信息的。这个问题对于使用过CUDA并且花一分钟阅读(勇敢的努力但仍在挣扎:)非母语英语的人来说是非常清楚的。不要轻率地回答问题。这对我也很有用。尽管这个问题有点尴尬,但在使用rdc标志编译时,我遇到了使用nSight调试CUDA的同样困难,我通过将所有编译文件合并到一个文件并排除rdc标志来解决了这个问题。