0

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

4

1 回答 1

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

于 2016-11-13T09:07:22.063 回答