文档

复合

创建复合对象

语法

C =复合()
C =复合(nlabs)

描述

C =复合()使用并行池中的工作线程在客户机上创建Composite对象。这个Composite对象引用的工作器的实际数量取决于池和任何现有Composite对象的大小。通常,您应该在任何外部构造复合对象spmd声明。

C =复合(nlabs)在匹配指定约束的并行池集上创建复合对象。nlabs必须是长度为1或2的向量,包含整数或.如果nlabs长度为1,它指定要使用的工人的确切数量。如果nlabs大小为2,它指定要使用的最小和最大工人数量。所使用的实际worker数量是与并行池的大小以及与其他现有Composite对象兼容的最大worker数量。如果不能满足工人数量的限制,则抛出错误。

复合对象为每个实验室提供一个条目;最初,每个条目不包含任何数据。使用索引或spmd块定义条目的值。

例子

下面的例子都使用了一个包含4个worker的本地并行池,使用语句打开:

p = parpool (“本地”4);

这个例子展示了如何创建一个没有定义元素的Composite对象,然后使用在客户端执行-loop。

c =复合();每个worker在池中有一个元素W = 1:长度(c) c{W} = 0;值存储在每个worker上结束

实例中分配复合元素spmd块。

c =复合();spmdc = 0;值存储在每个worker上结束

这个示例展示了如何使用每个worker的值为Composite的元素分配值。

c =复合();spmdc = labindex;结束c {:}
1 2 3 4

这个示例展示了如何使用分布式数组向量来设置Composite的值。

D = distributed([3 1 4 2]);%每个工人一个整数spmdc = getLocalPart (d);每个工人的唯一值结束c {:}
3 1 4 2

提示

  • 复合是在现有并行池的工作线程上创建的。如果不存在池,复合启动一个新的并行池,除非在并行首选项中禁用了池的自动启动。如果没有并行池和复合不能启动一个,结果是客户端工作空间中的1-by-1 Composite。

这个话题有用吗?