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