在运行gpu代码2-3小时后,cudaMalloc无法分配内存有什么原因吗? 我正在使用“Process Explorer”程序来检查全局内存使用情况。突然,cudaMalloc无法分配,尽管gpu上的免费全局内存仍然可用。
我如何检查这次失败的主要原因?我这样做:
if ( cudaSuccess !=cudaMalloc((void **) &arr, sizeof(int)*100))
printf("Cannot Allocate Mem");
有没有更好的方法来打印cuda失败的实际原因?
答案 0 :(得分:2)
你可以在下面做:
cudaError_t err= cudaMalloc((void **) &arr, sizeof(int)*100);
if(err != cudaSuccess){
printf("The error is %s", cudaGetErrorString(err));
}
这将打印错误的确切原因。例如。无效的设备指针意味着您正在访问一个不指向任何内容的指针。