我有一个多线程程序,并且只有一个线程正在使用GPU(Cuda,C ++)。在Linux的cuda代码中出现“粘性”错误后,如何恢复正常的GPU处理?
我尝试了cudaDeviceReset():
__global__ void tKernel() {return; }
// it is a part of my code
cudaDeviceSynchronize();
cudaGetLastError();
cudaGetLastError();
cudaDeviceReset();
tKernel<<<1, 1>>>();
cudaDeviceSynchronize();
cudaError_t err = cudaGetLastError();
if (err != cudaSuccess) {
std::cout << cudaGetErrorString(err);
}
但是每次都会出现错误: “所有支持CUDA的设备正忙或不可用”。 唯一的方法是停止我的程序,然后再次运行它。但是如何在不重启程序的情况下重置GPU?