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

并行和非并行matlab';s脚本-parfor的使用,matlab,parallel-processing,Matlab,Parallel Processing,我目前正在使用Matlab2013b,我想设计一个脚本,可以与并行或不并行工作。在以前版本的MATLAB中,我使用了parfor命令代替for命令。仅当我需要时,通过使用matlabpool命令激活并行性。在我当前的MATLAB版本中,我感到惊讶,因为当我使用parforwhithoutmatlabpool时,并行池就会启动 一种解决方案是编写一些循环来处理并行版本和非并行版本,但这样做需要很长时间 因此,我正在寻找一种解决方案,在并行和非并行上下文中使用parfor。您有两个选项:首先,您可以

我目前正在使用Matlab2013b,我想设计一个脚本,可以与并行或不并行工作。在以前版本的MATLAB中,我使用了
parfor
命令代替
for
命令。仅当我需要时,通过使用
matlabpool
命令激活并行性。在我当前的MATLAB版本中,我感到惊讶,因为当我使用
parfor
whithout
matlabpool
时,并行池就会启动

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


因此,我正在寻找一种解决方案,在并行和非并行上下文中使用
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

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

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

不,它没有-PARFOR包含在MATLAB中(虽然它是串行运行的)。不,它没有-PARFOR包含在MATLAB中(虽然它是串行运行的)。将
PARFOR
s转换为经典的
for
s对于调试来说也是非常好的。我一直在找这个!将
parfor
s转换为经典的
for
s对调试也很有帮助。我一直在找这个!