cudaMalloc几个小时后失败了

时间:2011-12-25 11:41:08

标签: memory-management cuda

在运行gpu代码2-3小时后,cudaMalloc无法分配内存有什么原因吗? 我正在使用“Process Explorer”程序来检查全局内存使用情况。突然,cudaMalloc无法分配,尽管gpu上的免费全局内存仍然可用。

我如何检查这次失败的主要原因?我这样做:

if ( cudaSuccess !=cudaMalloc((void **) &arr, sizeof(int)*100)) 
    printf("Cannot Allocate Mem");

有没有更好的方法来打印cuda失败的实际原因?

1 个答案:

答案 0 :(得分:2)

你可以在下面做:

cudaError_t err= cudaMalloc((void **) &arr, sizeof(int)*100);
if(err != cudaSuccess){
     printf("The error is %s", cudaGetErrorString(err));
}

这将打印错误的确切原因。例如。无效的设备指针意味着您正在访问一个不指向任何内容的指针。