一旦cudaMalloc返回内存不足,每个cuda API调用都会返回失败

时间:2015-06-18 07:44:11

标签: c++ memory cuda

使用CUDA,是否可以像垃圾收集一样使用?

例如,当我从cudaMalloc(...)收到内存不足错误时,是否可以释放先前分配的数据并重试分配内存?

一旦cudaMalloc(...)返回内存不足, 以下cuda调用似乎在此之后返回内存不足。 即使我用之前分配的有效设备指针调用cudaFree,cudaFree也会返回内存不足...

cudaDeviceReset()不是恢复我案件状态的好方法。

1 个答案:

答案 0 :(得分:5)

一旦CUDA遇到错误,所有API调用都将返回该错误。如果错误破坏了CUDA上下文,除了重置设备(cudaDeviceReset)之外没什么可做的。如果CUDA上下文没有被破坏,那么通过调用cudaSuccess,状态可以是resetcudaGetLastError()

根据Robert Crovella的comment,失败的cudaMalloc可能不会破坏CUDA上下文,因此您应该能够恢复。这不一定是错误的其他原因,每种情况可能都不同。