2012-07-23 48 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