我目前正在使用MATLAB 2013b,我想设计一个可以兼有和不兼容的脚本。在先前版本的MATLAB中,我使用parfor
命令代替for
命令。只有在需要时才使用matlabpool
命令激活并行性。在我目前的MATLAB版本中,我感到很惊讶,因为当我使用parfor
whithout matlabpool
并行池开始时。
一种解决方案可以编写一些循环来处理并行和非并行版本,但这样做需要很长时间。
所以我正在寻找一种在并行和非并行上下文中使用parfor
的解决方案。
答案 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