并行和非并行matlab的脚本 - 使用parfor

时间:2014-01-24 12:53:48

标签: matlab parallel-processing

我目前正在使用MATLAB 2013b,我想设计一个可以兼有和不兼容的脚本。在先前版本的MATLAB中,我使用parfor命令代替for命令。只有在需要时才使用matlabpool命令激活并行性。在我目前的MATLAB版本中,我感到很惊讶,因为当我使用parfor whithout matlabpool并行池开始时。

一种解决方案可以编写一些循环来处理并行和非并行版本,但这样做需要很长时间。

所以我正在寻找一种在并行和非并行上下文中使用parfor的解决方案。

1 个答案:

答案 0 :(得分:4)

您有两种选择:首先,您可以使用Parallel Preferences禁用自动创建池。其次,您可以使用PARFOR的可选第二个参数来选择何时并行。例如:

wantParallel = (rand() > 0.5); % or however you want to choose
if wantParallel
    workersArg = Inf; % Use all workers
else
    workersArg = 0; % No workers, do not open pool
end
parfor (idx = 1:N, workersArg)
    x(idx) = doStuff(...);
end