我在具有一个GTX 1080和一个K80(带有2个GPU)的系统上运行以下MATLAB代码
delete(gcp('nocreate'));
parpool('local',2);
spmd
gpuDevice(labindex+1)
end
reset(gpuDevice(2))
reset(gpuDevice(3))
parfor i=1:100
SingleGPUMatlabCode(i);
end
代码运行大约一秒钟。几秒后我重新运行代码。我收到了消息:
Error using parallel.gpu.CUDADevice/reset
An unexpected error occurred during CUDA execution. The
CUDA error was:
unknown error
Error in CreateDictionary
reset(gpuDevice(2))
我尝试增加TdrDelay
,但没有帮助。
答案 0 :(得分:1)
GPU代码中的某些内容导致设备出错。由于代码是异步运行的,因此在下一个同步点(即再次运行代码)之前不会捕获此错误。我需要查看SingleGPUMatlabCode
的内容才能知道该错误可能是什么。也许存在分配失败或超出界限的情况。未正确处理的错误将转换为未知错误'在下一次CUDA行动中。
尝试在循环中添加wait(gpuDevice)
以确定错误发生的时间。
如果设备2或3是GTX1080,您可能已经发现MATLAB对Pascal架构的限制支持存在问题。见https://www.mathworks.com/matlabcentral/answers/309235-can-i-use-my-nvidia-pascal-architecture-gpu-with-matlab-for-gpu-computing
如果这是由Windows超时引起的,您会看到几秒钟的屏幕停电。