我有一個簡單的內核,在我使用malloc分配一些空間,簡稱爲:CUDA調試與VS - 不能檢查__restrict__指針(操作無效)
__global__ void chainKernel() {
float* __restrict__ boo = (float*)malloc(sizeof(float));
*boo = 0;
*boo = *boo + 100;
return;
}
如果我把*boo = *boo + 100
上的斷點我看不到* boo的內容。相反,我在調試器窗口中將變量旁邊的Operation is not valid due to the current state of the object
。但是,如果我刪除了__restrict__
,則該值顯示正確。這是正常的行爲嗎?
我的系統:CUDA 5.5.20,Nsight 3.1.0.13141,Windows 7 x64,VS2010,GeForce GTX Titan。
不確定,但'__restrict__'關鍵字的目的是爲了避免*指針別名*也許NSight需要創建別名...我的猜測是這是一個正常的行爲。 – Michael
@Michael:如果我想調試,我必須重新定義 '#define __restrict__'? – user2412789