我正在使用GeForce 9800 GX2。我安装了驱动程序和CUDA SDK,我写了一个简单的程序,看起来像这样:
__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);
}
代码编译正确,但内核似乎没有启动...内核端没有打印消息。我该怎么做才能解决这个问题?
答案 0 :(得分:1)
鉴于你在评论中说你得到的“没有支持CUDA的设备”意味着要么你没有支持CUDA的GPU,要么你没有安装正确的驱动程序。鉴于你说你有两个,我建议你尝试重新安装你的驱动程序进行检查。
其他一些说明:
cudaDeviceSynchronize()
之前致电cudaPrintfDisplay()
。