0
我正在使用GeForce 9800 GX2。我安裝的驅動程序和CUDA SDK我寫了簡單的程序,它看起來就像這樣:CUDA內核不啓動
__global__ void myKernel(int *d_a)
{
int tx=threadIdx.x;
d_a[tx]+=1;
cuPrintf("Hello, world from the device!\n");
}
int main()
{
int *a=(int*)malloc(sizeof(int)*10);
int *d_a;
int i;
for(i=0;i<10;i++)
a[i]=i;
cudaPrintfInit();
cudaMalloc((void**)&d_a,10*sizeof(int));
cudaMemcpy(d_a,a,10*sizeof(int),cudaMemcpyHostToDevice);
myKernel<<<1,10>>>(d_a);
cudaPrintfDisplay(stdout, true);
cudaMemcpy(a,d_a,10*sizeof(int),cudaMemcpyDeviceToHost);
cudaPrintfEnd();
cudaFree(d_a);
}
的代碼編譯正確,但內核似乎沒有被啓動...沒有消息從內核端打印。我該怎麼做才能解決這個問題?
您可以從添加一些錯誤檢查開始。每個API調用都會返回一個狀態。您應該檢查其中每一個,以查看報告的錯誤以及發生的位置。 – talonmies 2012-03-01 15:57:42
另外,您確實運行了SDK示例代碼,對吧? Linux還是Windows? SDK樣本是否可以編譯和工作?他們全部? – Patrick87 2012-03-01 16:30:43
我試圖把API識別運行時錯誤,但它顯示出 '在30行的simple_device_call.cu中沒有檢測到支持CUDA的設備......我使用的是linux和SDL示例代碼也不起作用 – 2012-03-01 17:24:36