没有足够的RAM用于parfor

时间:2016-07-18 10:00:13

标签: matlab parallel-processing parfor

如果parfor认为计算机没有足够的ram来并行运行代码,它会自动序列化吗?这似乎确实如此。

我有两个相同的parfor循环(除了它们中的矩阵的大小)。在第一个上它很容易达到100%CPU和一半我的RAM,在第二个上它达到12-20%CPU和我所有的RAM,并且代码完全相同(除了它们内部的矩阵的大小)。 / p>

1 个答案:

答案 0 :(得分:0)

我已在此问题中解决了同一问题here

简而言之,当Matlab池中的每个工作者独立于其他工作者时,每个工作者都需要自己的内存量。

不,如果内存不存在,Matlab不会自动序列化你的for循环。如果Matlab抛出正确的错误(据我所知,它确实发生在Windows PC上),你可以做一些try-catch语句。 try-catch只是尝试执行try分支中的代码,如果发生某些错误,它会自动执行catch块。在你的情况下,它会像

try
    % parfor here
catch
    % standard for here
end