gpuArray和内存管理
10视图(30天)
显示旧的评论
你好,
我有一个循环中,我创建了一个gpuArrays的数量。保持在内存限制我清楚一些gpuArrays中间结果。在Matlab R2011b一切都清理好,但R2012a循环崩溃的内存不足异常(运行相同的代码)。我明白我不能完全信任gpuDevice FreeMemory报道,虽然我看到内存被释放在R2011b R2012a它不是。有一些方法来迫使R2012a释放内存(没有重置)?
谢谢!
答案(1)
本Tordoff
2012年5月8日
嗨贡纳,
这是一个变通方法多于一个答案,但是试着插入“等(gpu)”后释放内存。例如:
gpu = gpuDevice ();
bigData = parallel.gpu.GPUArray.rand (2000);
%做大量的计算
清晰的bigData;
等待(gpu);
R2012a和GPU上面可能仍在运行,当你到达“清晰”命令它可能需要保存到内存中。使用“等待”,确保所有的计算已经完成了安全允许的内存被释放。
然而,这不该是必要的。如果内存运行低,MATLAB应该等待并自动释放一些内存。你可以发布一个代码片段,展示了如何冲击问题,这样我可以看到为什么这不是发生在你身上?特别是,哪个函数耗尽内存,这是一个创建函数(0,1,兰德等)或一个操作(fft、乘等)?
谢谢
本