重置(gpuDevice)不工作
31日视图(30天)
显示旧的评论
当我运行下面的代码值n < 5000它运行得很好。
重置(gpuDevice);
n = 5000;
一个= gpuArray(兰德(n));
b = gpuArray(兰德(n));
抽搐
t =“*;
c = t \ (a * b ');
toc
但当我运行n = 5000我得到错误的“错误使用\叫双陆GPU失败与错误状态:未指明的发射失败。”
如果我再次尝试运行程序对任何小n我得到错误的价值
“错误使用parallel.gpu.CUDADevice /重置
一个意想不到的错误pccured CUDA执行期间。CUDA的错误是“所有CUDA能力设备正忙着或不可用”
同样,如果我执行以下命令
g = gpuDevice;
disp (g.FreeMemory)
我得到的答案是南
我无法运行复位(gpuDevice)命令。它给上面的错误一样。
2的评论
阿诺德
2016年8月20日
你好,
我现在只是寻找这个错误,我有一个类似的问题在机器工作。我试着使用
类(一)
ans =
gpuArray
b = medfilt2 (a [9, 9]);
错误使用medfilt2gpumex
失败在GPU实现。
未指明的发射失败。
错误在gpuArray / medfilt2(37)行
b = medfilt2gpumex(变长度输入宗量{:});
过滤器的大小[7]和较小的工作但是9向上给了这个错误。在那之后,gpuDevice也显示
availableMemory:南
从这个我不能使用GPU再也没有重新启动Matlab。这是太糟糕了,因为GPU是20倍做这样的计算。
设置:
- Matlab 2016
- Windows 64 Pro(所有更新)
- 英特尔5960 x
- 64 gb RAM
- GTX1080与372.54(最新驱动程序)。
接受的答案
艾莉森Eele
2016年8月25日
我认为你正在经历的症状一个内核执行超时。如果GPU是连接到一个监控(或在Windows GPU WDDM模式)中运行的操作系统强加一个消磨时间在GPU上的任何操作发生。这个超时的意图是让屏幕显示继续。当这发生在杀死一个MATLAB的过程使用GPU它破坏我们连接到GPU和MATLAB解决通常需要重启。
你可以发现如果一个内核超时GPU执行在MATLAB gpuDevice命令。将列出的属性之一:
KernelExecutionTimeout: 0
如果这是0,那么没有执行超时被应用到卡。如果它是1,那么操作系统将被强制超时(确切的超时因操作系统而异)。
解决这个问题的方法:
- 如果可能的话在小块做计算,避免超时。
- 如果有多个GPU卡在计算机和计算机窗口就可以从一些NVIDIA卡WDDM太极拳(计算)(显示)模式使用nvidia-smi实用工具。太极拳的卡片没有执行超时。你不能显示连接到太极拳模式卡。
- 在Windows可以延长超时使用注册表编辑虽然与所有注册表编辑应该慎之又慎。https://msdn.microsoft.com/en-us/Library/Windows/Hardware/ff569918 (v = vs.85) . aspx
5个评论
阿诺德
2016年9月25日
嗨,艾莉森,
我认为我的大部分计算应该可剥离成并行任务我做很多聪明的计算图像栈的元素。你能提示我在正确的方向上是如何分裂,也许blockfunctions吗?
认为阿诺德
更多的答案(4)
D.W. Moyar
2022年1月12日
我遇到了一个场景,重置GPU设备显然不工作,导致GPU内存错误。我训练LSTM网络在一个循环中。每个循环训练新的LSTM具有不同的特性。每次我跑程序,循环运行没有事件20迭代,然后产生一个GPU内存错误。我尝试重置循环迭代之间的GPU,删除培训和目标之间的数据变量迭代,GPU重置后,不时停下来。这些努力工作。只有这样我才能得到循环运行是保存所有变量每15迭代,明确整个工作区,并重新加载变量。也许这个问题是硬件相关?我有一个的GeForce 1080 Ti图形卡。