2016-11-10 83 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超時引起的,您將看到幾秒鐘的屏幕停電。