2016-11-10 97 views
0

我正在运行的系统上下面的MATLAB代码与一个GTX 1080和K80(含2个GPU)多GPU代码运行几秒钟只

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

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