执行为
在worker上并行循环迭代
parfor
执行loopVar
=initVal
:endval.
;语句
;结束为
- 在平行池中的工人上并行迭代。
MATLAB®执行循环正文命令语句
对于价值观loopVar
之间的initVal
和endval.
.loopVar
指定一个整数值递增1的向量。如果您有并行计算工具箱™,则语句
可以在多核计算机或集群的并行工作池上执行。与一个为
在-loop中,可以包含单行或多行语句
.
找出如何parfor
可以帮助提高你的吞吐量,明白吗决定什么时候使用parfor.
parfor
与传统不同的不同为
-loop方法如下:
循环迭代以不确定的顺序并行执行。这意味着您可能需要修改代码才能使用parfor
.想要更多帮助,请看将循环转换为循环循环.
循环迭代必须是连续的,增加整数值。
身体的parfor
-loop必须是独立的。一个循环迭代不能依赖于前一个迭代,因为迭代是以不确定的顺序执行的。想要更多帮助,请看确保parfor-Loop迭代是独立的.
你不能用parfor
- 在另一个里面parfor
循环。想要更多帮助,请看嵌套parfor和for循环以及其他parfor需求.
parfor (
使用loopVar
=initVal
:endval.
,米
);语句
;结束米
指定用于计算的并行池中工作程序的最大数量语句
在循环体中。米
必须是非负整数。
默认情况下,MATLAB使用并行池中的可用工作程序。你可以改变工人的数量首页选项卡中环境节中,通过选择平行>并行偏好.使用以下命令可以覆盖并行池中的默认工作人员数量parpool
.当池中没有工作人员时米
为0时,MATLAB仍然以不确定的顺序执行循环体,但不是并行执行。在测试代码时,可以使用此语法在并行和串行执行之间进行切换。
使用此语法,要并行地执行迭代,您必须有一个并行的工作者池。默认情况下,如果执行parfor
,您自动在默认群集配置文件定义的群集中创建并行工人池。默认群集是当地的.您可以更改群集并行偏好.有关更多详细信息,请参阅指定您的并行偏好.
使用一个parfor
- 辛:
一个简单的计算有很多循环迭代。parfor
将循环迭代划分为组,以便每个线程可以执行一组迭代。
有些循环迭代需要很长时间才能执行。
不要使用parfor
- 循环中的迭代取决于其他迭代的结果时。
减少是此规则的一个例外。一种减少变量累积的值依赖于所有迭代,但与迭代顺序无关。有关更多信息,请参见减少变量.
当你使用时parfor
,则必须等待循环完成才能获得结果。您的客户端MATLAB被阻塞,您无法提前跳出循环。如果你想获得中间结果,或者打破为
循环早期,试试parfeval
代替。
除非您指定一个集群对象,否则parfor
-loop在现有的并行池上运行。如果没有池,parfor
首先启动新的并行池,除非在您的并行首选项中禁用池自动启动。如果没有平行池和parfor
无法启动,循环在客户端会话中连续运行。
如果AutoAttachFiles
属性设置为真的
, MATLAB对parfor
-loop以确定其执行所必需的代码文件,请参阅listAutoAttachedFiles
.然后MATLAB自动将这些文件附加到并行池中,以便工作人员可以使用这些代码。
您不能直接调用脚本parfor
循环。但是,您可以调用调用脚本的函数。
不要使用清晰的
在一个parfor
循环,因为它违反了工作空间的透明度。看到确保parfor循环或spmd语句的透明度.
你可以运行simulin金宝appk®模型与之平行parsim
命令代替使用parfor
循环。有关并行使用Simulink的更多信息和示例,请参阅金宝app运行多个模拟(金宝app模型).