2012-07-23 63 views
1

我可以正确观察任何变量或指针,但在使用NSight进行调试时无法为引用变量执行此操作。我已经尝试将引用转换为手表或即时窗口中的指针,但无济于事。我不想用指针重写我的代码。我在Windows 7 64位计算机,CUDA 4.0,Parallel NSight 2.0中使用Visual Studio 2010 SP1,我的代码正在为Win32编译。如何使用CUDA并行NSight调试器观察参考变量?

实施例: __ device__ void函数(INT &参数)

不能调试参数。调试器无法访问。

+0

您是指C++参考? – sj755 2012-07-24 03:45:02

+1

是的。例如:“__ device __ void function(int&parameter)”。无法调试参数。 – 2012-07-24 13:20:32

回答

1

更新到Nsight 2.2,CUDA 4.2和Dev驱动程序301.32,并做到了这一点。

1

我在我的机器上重现了这个问题。 Windows 7 64位,Visual Studio 2010,CUDA 4.1。

我不能调试:

__device__ int myfunc(int& myint) 
{ 
    return myint * 5; 
} 

我可以设置与return行断点,但因为它是由引用传递我无法查看变量。

如果我将其更改为:

__device__ int myfunc(int& myint) 
{ 
    int debug(myint); 
    return debug * 5; 
} 

我可以查看debug变量。

我想你应该向NVIDIA提交一个bug。尽管如此,我不知道他们的系统是否足够恢复。

+0

我仍然不能用这种方法观察变量。 – 2012-07-24 15:38:01

+0

你在使用'debug'变量吗?不幸的是,将通过引用传递的变量复制到它中是不够的。所以第二个例子是'debug * 5'而不是'myint * 5'。 – 2012-07-24 15:52:31

+0

感谢您的回复。我更新了Nsight 2.2,CUDA 4.2和Dev驱动程序301.32,它做到了。 – 2012-07-24 20:01:45