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