可以通过编程方式打开/关闭Matlab PARFOR循环吗?

时间:2012-04-12 23:37:43

标签: matlab parfor

在MATLAB中有一个关于parfor的简单问题。我想在我的程序中设置一个标志,以便在parfor和regular for循环之间进行更改。基本上,我需要这个功能,以便我的代码的某些部分可以在“调试”模式下更新图形,然后当标志关闭时,使用parfor没有图形更新的速度。

所以,我正在寻找具有此功能的简单方法:

if (flag)
  for i = 1:n
else
  parfor i = 1:n
end

  % Do loop tasks.

  end

任何帮助将不胜感激!谢谢!

3 个答案:

答案 0 :(得分:6)

不,这是不可能的。但是,如果您可以将循环体包装在单独的函数中,则可以使用parforfor循环调用正文,即

if (flag)
   parfor i=1:n
      out(i) = loopBody(i)
   end
else
   for i=1:n
      out(i) = loopBody(i)
   end
end

或者,您可以编辑代码,以便在循环前面有parforfor,这是我经常要做的事情。

答案 1 :(得分:6)

还有一个选项 - 使用PARFOR

的可选参数
if flag
  arg = Inf;
else
  arg = 0;
end
parfor (idx = 1:n, arg)
   ...
end

答案 2 :(得分:5)

当您按matlabpool close关闭池时,parfor的行为与for相似,并允许所有图形处理。所以你只需要在调试时关闭池。