Matlab上的多个GPU代码仅运行几秒钟

时间:2016-11-10 17:15:01

标签: matlab multiple-gpu

我在具有一个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,但没有帮助。

1 个答案:

答案 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超时引起的,您会看到几秒钟的屏幕停电。