spmd
并行执行的代码工人并行池
语法
spmd语句
结束
描述
spmd,
定义了一个语句
,最后spmd
声明在一行。MATLAB®执行spmd
身体用语句
同时在几个MATLAB工人。每个工人可以操作一个不同的数据集或者分布式数据的不同部分,并且可以与其他参与人员在执行并行计算。的spmd
可以使用声明只有如果你有并行计算工具箱™。并行执行的语句,您必须首先创建一个池的MATLAB工人使用parpool
或者你的平行偏好允许自动启动一个池。
体内的spmd
MATLAB语句,每个工人的独特价值spmdIndex
,而spmdSize
表示工人执行并行块的总数。的身体内spmd
声明中,通信功能(如沟通工作spmdSend
和spmdReceive
)可以在工人之间传输数据。
从身体的一个返回值spmd
语句转换为复合
在MATLAB端对象。复合对象包含引用的值存储在远程MATLAB的工人,和那些可以使用单元阵列索引检索值。工人的实际数据仍可在后续的工人spmd
执行,只要复合存在于客户端和并行池仍然开放。
默认情况下,MATLAB使用池中所有工人。当没有池活跃,MATLAB将创建一个池和使用所有的工人从池中。如果你的偏好不允许自动池创建,MATLAB执行本地块体并在必要时创建复合对象。你不能执行spmd
如果任何工人正忙着执行一个块parfeval
请求,除非你使用spmd (0)
。
更多信息spmd
和复合对象,明白了分配数组和SPMD运行。
请注意
使用parfevalOnAll
而不是parfor
或spmd
如果你想使用清晰的
。这保存工作区透明度。看到确保parfor-Loops或spmd语句的透明度。
spmd (
使用n
),语句
,最后n
指定的确切数字MATLAB工人来评估语句
,前提是n
工人可以从平行池。如果没有足够的工人,则抛出一个错误。如果n
是零,MATLAB执行本地块体和创建复合对象,如果没有可用池一样。
spmd (
使用最少的米
,n
)、语句的结束米
,最高n
员工评估语句
。如果没有足够的工人,则抛出一个错误。米
可以是零,这允许阻止本地运行如果没有工人。
例子
提示
一个
spmd
块并行运行在现有的工人池。如果池不存在,spmd
将开始一个新的并行池,除非禁用自动启动池在你平行的偏好。如果没有游泳池和平行spmd
不能一开始,连续运行的代码在客户端会话。如果
AutoAttachFiles
财产的集群配置文件将平行池真正的
,MATLAB对一个执行一个分析spmd
来确定代码块执行文件是必要的,这些文件然后自动高度平行池的工作,这样可用的代码工人。限制和限制在使用信息
spmd
,请参阅运行单一程序在多个数据集。的性能信息
spmd
和其他并行编程结构,明白了选择spmd、parfor parfeval。
版本历史
介绍了R2008b