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

时间:2014-02-20 14:42:33

标签: visual-studio-2010 cuda

调试CUDA内核时遇到问题。某些变量无法在调试器中进行评估。经过大量的调查和简化项目和代码我有一个非常简单的项目,包含主要应用程序调用DLL中调用内核的主机函数。 实际使用Visual Studio的项目向导创建的内核代码。 另外我有EMPTY .cu文件。当它包括构建我有一个问题。 当此文件从构建中排除时 - 一切正常。 带空文件的dll调试版的大小为92 kb,没有90kb。

我的设置是 Windows 7 Pro x64 VS2010 Pro NVIDIA Nsight VS Edition 3.2.2 CUDA SDK 5.5 NVIDIA驱动程序331.82

2 个答案:

答案 0 :(得分:3)

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

CU file passed for compilation to NVCC that perform preprocessing and divide code to host and gpu. After that host code compiled with VC compiler and gpu continue with nvcc.

当CU文件不包含任何代码__device__的GPU代码时,调试信息会被破坏。 所以解决方法是在这种CU文件中添加虚函数:

__device__ void dummy1()
{
}

答案 1 :(得分:0)

尽管这个问题被低估了,但我也遇到了同样的问题,经过一番调查后发现,当我将“配置属性| CUDA C / C ++ |通用|生成可重定位设备代码”设置为“是的”,这对我来说非常重要。设置为“否”解决了这个问题,但我不明白为什么。