并行执行代码并行池的工人
SPMD.语句
结尾
spmd,
定义一个语句
, 结尾SPMD.
语句在一行中。马铃薯®执行SPMD.
身体表示语句
在多个MATLAB工作人员上同时进行。每个worker可以操作不同的数据集或分布式数据的不同部分,并可以在执行并行计算时与其他参与的worker进行通信。这SPMD.
只有当您有并行计算工具箱™时,才可以使用语句。要并行执行语句,您必须首先使用Matlab Workers池使用parpool.
或者有并行首选项允许自动启动池。
在身体里面SPMD.
声明,每个Matlab工人都有一个独特的价值Labindex.
, 尽管numlabs
表示并行执行块的工人总数。在身体内SPMD.
声明,通信功能用于沟通作业(例如拉布德
和LabReceive.
)可以在工作人员之间传输数据。
从身体返回的值SPMD.
声明转换为合成的
对象。Composite对象包含对存储在远程MATLAB工作者上的值的引用,可以使用单元格数组索引检索这些值。关于工人的实际数据仍可用于后续工作SPMD.
执行,只要复合存在于客户机上并且并行池保持打开状态。
默认情况下,MATLAB使用池中的所有工作者。当没有活动池时,MATLAB将创建一个池并使用该池中的所有工作人员。如果您的首选项不允许自动创建池,MATLAB将在本地执行块体,并根据需要创建Composite对象。你不能执行SPMD.
如果任何工人忙于执行a,则阻止Parfeval.
请求,除非你使用SPMD(0)
.
有关的更多信息SPMD.
和复合对象,看分布阵列和运行SPMD.
笔记
使用Parfevalonall.
代替议案
或SPMD.
如果你想使用清晰的
.这保留了工作区透明度。看确保循环或SPMD语句中的透明度.
spmd (
使用N.
),语句
, 结尾N.
指定MATLAB工人的确切数量来评估语句
,提供了N.
可以从并行池中使用worker。如果没有足够的工作人员可用,则抛出一个错误。如果N.
为零,Matlab在本地执行块体并创建复合对象,与没有可用的池相同。
spmd (
使用最少m
那N.
),陈述,结束m
最多N.
员工评估语句
.如果没有足够的工作人员可用,则抛出一个错误。m
可以为零,如果没有工人,则允许块在本地运行。
一个SPMD.
块在现有并行池的工人上运行。如果没有池,SPMD.
将启动一个新的并行池,除非在并行首选项中禁用自动启动池。如果没有并行池和SPMD.
无法启动,代码将在客户端会话中连续运行。
如果autacattachfiles.
属性设置为真正的
, MATLAB对SPMD.
块确定其执行所必需的代码文件,然后自动将这些文件附加到并行池作业,以便工人使用代码。
有关使用时限制和限制的信息SPMD.
, 看在多个数据集上运行单个程序.
的性能信息SPMD.
和其他并行编程构造,见在spmd, parfor和parfeval之间进行选择.