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