parfor
执行为
-在worker上并行循环迭代
语法
描述
parfor
执行loopVar
=initVal
:endVal
;语句
;结束为
-在并行池中的worker上并行循环迭代。
MATLAB®中执行循环体命令语句
的值loopVar
之间的initVal
而且endVal
.loopVar
指定以1递增的整数值的向量。如果您有并行计算工具箱™,则语句
可以在多核计算机或集群上的并行工作池上执行。就像为
-loop中,可以包含单行或多行语句
.
来找出parfor
可以帮助提高产量,明白吗决定何时使用parfor.
parfor
不同于传统的为
-loop方法如下:
循环迭代以不确定的顺序并行执行。这意味着您可能需要修改代码才能使用
parfor
.有关更多帮助,请参见将for-Loops转换为parfor-Loops.循环迭代必须是连续递增的整数值。
的主体
parfor
-loop必须是独立的。一个循环迭代不能依赖于前一个迭代,因为迭代是以不确定的顺序执行的。有关更多帮助,请参见确保parfor-Loop迭代是独立的.你不能使用
parfor
-循环在另一个parfor
循环。有关更多帮助,请参见嵌套的parfor和for-Loops和其他parfor需求.
parfor (
使用loopVar
=initVal
:endVal
,米
);语句
;结束米
指定并行池中用于计算的最大工作数语句
在循环体中。米
必须为非负整数。
默认情况下,MATLAB使用并行池中可用的worker。上的工作人员数量可以更改首页页中的环境节,通过选择平行>平行的偏好.您可以通过使用重写并行池中的默认工作数parpool
.当泳池里没有工人的时候米
为零时,MATLAB仍然以不确定的顺序执行循环体,但不是并行执行。在测试代码时,可以使用此语法在并行和串行执行之间切换。
使用这种语法,要并行地执行迭代,您必须有一个并行的工作人员池。默认情况下,如果执行parfor
,您将自动在默认概要文件定义的并行环境上创建一个并行工作者池。默认的并行环境是流程.您可以更改您的个人资料平行的偏好.详情请参见指定你的并行偏好.
例子
输入参数
提示
使用一个
parfor
循环时间:一个简单的计算有许多循环迭代。
parfor
将循环迭代划分为组,以便每个线程可以执行一组迭代。您有一些需要很长时间执行的循环迭代。
不要使用
parfor
当循环中的迭代依赖于其他迭代的结果时,使用-loop。减法是这个规则的一个例外。一个减少变量累积的值依赖于所有的迭代,但与迭代顺序无关。有关更多信息,请参见减少变量.
当你使用
parfor
,您必须等待循环完成才能获得结果。您的客户端MATLAB被阻塞,您无法提前跳出循环。如果要获得中间的成绩,还是要突破一个为
-尽早循环,尝试parfeval
代替。除非指定了集群对象,否则
parfor
-loop在现有的并行池上运行。如果不存在存储池,parfor
启动一个新的并行池,除非在并行首选项中禁用了池的自动启动。如果没有平行池和parfor
不能启动循环,循环在客户端会话中串行运行。如果
AutoAttachFiles
属性设置为真正的
, MATLAB对a进行了分析parfor
-loop以确定其执行所需的代码文件,请参见listAutoAttachedFiles
.然后MATLAB自动将这些文件附加到并行池,以便工作人员可以使用这些代码。类中不能直接调用脚本
parfor
循环。但是,您可以调用调用脚本的函数。不要使用
清晰的
在一个parfor
循环,因为它违反了工作空间的透明性。看到确保parfor-Loops或spmd语句的透明度.你可以运行Simulin万博1manbetxk®模型与之并行
parsim
命令,而不是使用parfor
循环。有关并行使用Simulink的更多信息和示例,请参见万博1manbetx运行多个模拟(万博1manbetx模型).
版本历史
在R2008a中引入