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