CUDA内核未启动

CUDA内核未启动,cuda,Cuda,我用的是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);

我用的是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); 
} 
\uuuuu全局\uuuuu无效myKernel(int*d\u a)
{ 
int tx=线程idx.x;
d_a[tx]+=1;
cuPrintf(“你好,来自设备的世界!\n”);
} 
int main()
{ 
int*a=(int*)malloc(sizeof(int)*10);
int*d_a;
int i;

对于(i=0;i如果您在评论中说您得到的是“没有支持CUDA的设备”,这意味着您没有支持CUDA的GPU,或者没有安装正确的驱动程序。如果您说两者都有,我建议您尝试重新安装驱动程序以进行检查

其他一些注意事项:

  • 您是否试图通过远程桌面执行此操作?这将不起作用,因为对于RDP,Microsoft使用虚拟显示设备远程转发显示,特斯拉GPU支持通过使GPU表现为非显示设备来允许RDP工作,但对于Geforce这样的显示GPU,这是不可能的。在控制台或在控制台登录并使用VNC
  • 还可以尝试运行deviceQuery SDK代码示例,以检查它是否正确检测到GPU和驱动程序/运行时版本
  • 您应该检查所有CUDA API调用是否存在错误
  • cudaPrintfDisplay()之前调用
    cudaDeviceSynchronize()

  • 考虑到你在评论中说你得到的是“没有支持CUDA的设备”,这意味着要么你没有支持CUDA的GPU,要么你没有安装正确的驱动程序。考虑到你说你两者都有,我建议你试着重新安装驱动程序来检查

    其他一些注意事项:

  • 您是否试图通过远程桌面执行此操作?这将不起作用,因为对于RDP,Microsoft使用虚拟显示设备远程转发显示,特斯拉GPU支持通过使GPU表现为非显示设备来允许RDP工作,但对于Geforce这样的显示GPU,这是不可能的。在控制台或在控制台登录并使用VNC
  • 还可以尝试运行deviceQuery SDK代码示例,以检查它是否正确检测到GPU和驱动程序/运行时版本
  • 您应该检查所有CUDA API调用是否存在错误
  • cudaPrintfDisplay()之前调用
    cudaDeviceSynchronize()

  • 您可以从添加一些错误检查开始。这些API调用中的每一个都返回一个状态。您应该检查它们中的每一个,以查看报告的错误以及错误发生的位置。此外,您确实运行了SDK示例代码,对吗?Linux或Windows?SDK示例是否编译并工作?所有这些?我尝试放置API以识别运行时错误r但它显示,
    在第30行的simple_device_call.cu中未检测到支持CUDA的设备。
    …我使用的是linux,SDL示例代码也不是working@user997704:因此,您的CUDA安装无法正常工作。在您担心此代码之前,请先修复此问题。您可以从添加一些错误检查开始。这些API调用中的每一个都会返回一个status。你应该检查每一个示例,看看报告了什么错误以及错误发生在哪里。此外,你确实运行了SDK示例代码,对吗?Linux或Windows?SDK示例是否编译并工作?所有这些?我尝试放置API以识别运行时错误,但它显示在simple_device_call.cu中未检测到支持CUDA的设备在第30行
    …我使用的是linux,SDL示例代码也不是working@user997704:因此,您的CUDA安装无法正常工作。请在担心此代码之前修复此问题。