在并行池的工作线程上并行执行代码
spmd语句
终止
spmd,
定义一个语句
终止spmd
语句在一行中。MATLAB®执行spmd
主体由语句
在多个MATLAB工作人员上同时进行。每个worker可以操作不同的数据集或分布式数据的不同部分,并可以在执行并行计算时与其他参与的worker进行通信。的spmd
语句只能在您有并行计算工具箱的情况下使用™. 要并行执行这些语句,必须首先使用帕尔普
或者让您的并行首选项允许自动启动池。
体内spmd
语句中,每个MATLAB工作程序都有一个唯一的值labindex
虽然numlabs
表示并行执行块的工人总数。体内spmd
语句,用于通信作业的通信功能(例如拉布森德
和拉伯雷
)可以在工作人员之间传输数据。
从函数体返回的值spmd
语句转换为混合成的
对象。Composite对象包含对存储在远程MATLAB工作者上的值的引用,可以使用单元格数组索引检索这些值。关于工人的实际数据仍可用于后续工作spmd
执行,只要复合存在于客户机上并且并行池保持打开状态。
默认情况下,MATLAB使用池中的所有工作者。当没有活动池时,MATLAB将创建一个池并使用该池中的所有工作人员。如果您的首选项不允许自动创建池,MATLAB将在本地执行块体,并根据需要创建Composite对象。你不能执行spmd
如果任何工作进程正忙于执行帕菲尔
请求,除非你使用spmd(0)
.
有关spmd
和复合对象,请参见分布阵列和运行SPMD.
笔记
使用帕菲瓦诺酒店
而不是帕弗
或spmd
如果你想用清晰的
. 这将保持工作空间的透明度。看见确保parfor循环或spmd语句的透明度.
spmd (
使用N
),语句
终止N
指定要评估的MATLAB工作人员的确切数量语句
,条件是N
可以从并行池中使用worker。如果没有足够的工作人员可用,则抛出一个错误。如果N
如果为零,MATLAB将在本地执行块体并创建复合对象,这与没有可用池的情况相同。
spmd (
使用最少的M
,N
)结束M
最多N
员工评估语句
.如果没有足够的工作人员可用,则抛出一个错误。M
可以为零,这允许块在没有工作人员可用时在本地运行。
一spmd
块在现有并行池的工作线程上运行。如果不存在池,spmd
将启动一个新的并行池,除非在并行首选项中禁用自动启动池。如果没有并行池和spmd
无法启动,代码将在客户端会话中连续运行。
如果自动附着文件
属性设置为真正的
, MATLAB对spmd
块以确定其执行所需的代码文件,然后自动将这些文件附加到并行池作业,以便工作人员可以使用代码。
有关使用时的限制和限制的信息spmd
看见在多个数据集上运行单个程序.
的性能信息spmd
和其他并行编程结构,请参见在spmd, parfor和parfeval之间进行选择.