SPMD

并行池的工人并行执行代码

句法

SPMD声明结束

描述

SPMD,声明, 结束定义SPMD声明一行。MATLAB®执行SPMD身体通过表示声明同时上几个MATLAB工人。每个工人可以在不同的数据集或分布式数据的不同部分进行操作,并且在执行并行计算可以与其他参与人员进行通信。该SPMD语句可以用来只有当你有并行计算工具箱™。要并行执行的语句,必须先使用MATLAB创建工人池parpool或有你的喜好平行允许池的自动启动。

里面的身体SPMD声明中,每个MATLAB工人都有独特的价值labindex,而numlabs表示并行执行块工人的总数。内的身体SPMD声明中,对通信工作的通信功能(如labSendlabReceive)可以工人之间传输数据。

从价值观的身体返回SPMD声明转化为综合对象MATLAB客户端上。复合对象包含到存储在远程MATLAB工人的值的引用,并且可以使用细胞阵列索引中检索这些值。对工人的实际数据仍然可用的工人随后SPMD执行,只要综合客户端和并行池上存在保持打开状态。

默认情况下,MATLAB使用所有工人池。如果没有池活跃,MATLAB将创建一个池,并使用所有的工人从该池。如果你的喜好不允许自动池创建,MATLAB本地执行的块体,并根据需要创建复合对象。你不能执行SPMD方框如果任何工人忙于执行一个parfeval要求,除非你使用SPMD(0)

有关详细信息SPMD和复合物,见分发数组和运行SPMD

注意

parfevalOnAll代替PARFOR要么SPMD如果你想使用明确。这保留了工作区的透明度。看到确保透明度在PARFOR-循环或SPMD声明

SPMD(ñ声明, 结束使用ñ指定MATLAB工人的确切人数,以评估声明,前提是ñ工人可以从并行池。如果没有足够的工人用,则会引发错误。如果ñ是零,MATLAB本地执行的块体,并创建复合对象,一样的,如果没有可用的游泳池。

SPMD(ñ),声明,端使用最少的和最多ñ工作人员评价声明。如果没有足够的工人用,则会引发错误。可以是零,这使得如果无工可用块在本地运行。

例子

全部收缩

创建一个平行池,并且使用并行地执行一个简单的计算SPMD。MATLAB执行里面的代码SPMD在平行池中的所有工人。

parpool(3);
开始使用“本地”轮廓平行池(parpool)......连接到并行池(工号:3)。
SPMDQ =魔法(labindex + 2);结束

绘制的结果。

图副区(1,3,1),于imagesc(Q {1});副区(1,3,2),于imagesc(Q {2});副区(1,3,3),于imagesc(Q {3});

当你与计算完成后,你可以删除当前并行池。

删除(GCP);

如果你有机会到几个GPU的,你可以使用并行库并行多GPU执行计算。

开始并行池尽可能多的工人的GPU。要确定GPU的可用数量,可使用gpuDeviceCount功能。默认情况下,MATLAB分配一个不同的GPU,以每个工人获得最佳性能。

parpool('本地',gpuDeviceCount);

为了识别每个工人使用,调用该GPUgpuDevice内部的SPMD块。该SPMD块运行gpuDevice对每一个工人。

SPMDgpuDevice结束

使用并行语言功能,如PARFOR要么parfeval,你的计算分配给工人并行池。如果您使用gpuArray在你的计算启用的功能,这些功能对工人的GPU上运行。欲了解更多信息,请参阅在GPU上运行MATLAB功能。对于一个示例,请参见在多GPU上运行MATLAB功能

当你与你的计算完成后,关闭并行池。您可以使用GCP函数来获取当前并行池。

删除(GCP('nocreate的'));

如果你想使用一个不同的选择GPU的,你可以使用gpuDevice选择在每个工人一个特定的GPU。定义一个阵列,例如gpuIndices,包含GPU的指数来激活每个工人。然后,开始并行池尽可能多的工人GPU来选择,并使用SPMD阻止运行gpuDevice每个工人。该labindex功能识别每个工人。使用此功能的工人与GPU指数相关联。

gpuIndices = [1 3];parpool(numel(gpuIndices));SPMDgpuDevice(gpuIndices(labindex));结束

作为最佳实践,并获得最佳性能,分配不同的GPU到每个工人。

提示

  • 一个SPMD块运行在现有的并行池的工人。如果没有池存在,SPMD将开始新的并行池,除非池的自动启动在您的并行喜好被禁用。如果没有平行的泳池和SPMD不能启动一个,代码连续运行在客户端会话。

  • 如果AutoAttachFiles在并行池群集配置文件属性设置为真正,MATLAB执行上的一个分析SPMD块,以确定哪些代码文件所需的其执行的,那么代码是提供给工人自动附加这些文件进行并行池工作。

  • 有关约束和限制的信息时使用SPMD在多个数据集运行单个程序

介绍了在R2008b