【发布时间】:2012-03-09 00:32:34
【问题描述】:
我使用的是 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);
}
代码正在正确编译,但内核似乎没有启动...内核端没有打印任何消息。我应该怎么做才能解决这个问题?
【问题讨论】:
-
您可以从添加一些错误检查开始。这些 API 调用中的每一个都会返回一个状态。您应该检查其中的每一个,以查看报告的错误以及发生的位置。
-
另外,您确实运行了 SDK 示例代码,对吧? Linux 还是 Windows? SDK 示例是否可以编译和工作?全部?
-
我尝试使用 API 来识别运行时错误,但它显示
no CUDA-capable device is detected in simple_device_call.cu at line 30...我正在使用 linux 并且 SDL 示例代码也无法正常工作 -
@user997704:所以你有一个不工作的 CUDA 安装。在您担心此代码之前修复它。
标签: cuda