主要内容

分布式

从客户端工作区或数据存储中的数据创建分布式数组

描述

例子

D=分布(ds控件创建分布式数组数据存储dsD是一个分布式数组,部分存储在开放的并行池的工作者上。您将整个数组作为一个实体进行操作,但是,workers只对数组中它们的部分进行操作,并在必要时自动在它们之间传输数据。

将分布式数组元素从池中检索到MATLAB中的数组中®工作空间,使用收集

例子

D=分布(X从一个数组创建一个分布式数组X

只有当MATLAB客户端能够存储全部数据时,用这种方式从本地数据构造分布式数组才是合适的X在它的记忆。要构造大型分布式数组,请使用构造函数方法之一,例如(___“分布式”)0(___“分布式”)等。查看列表构造函数

如果输入参数已经是分布式数组,则结果与输入相同。

例子

D=分布(C昏暗的从Composite数组创建分布式数组C,条目为C沿维度连接和分布的昏暗的.如果您省略昏暗的,那么第一个维度是分布维度。

Composite数组的所有条目必须具有相同的类。除分布维度外的维度必须匹配。

例子

创建分布式阵列

创建一个小数组并分发它。

Nsmall = 50;D1 =分布式(魔法(Nsmall));

使用构建方法直接创建大型分布式数组。

Nlarge = 1000;D2 =兰德(Nlarge,“分布式”);

检索分布式数组的元素,并注意数组的位置

D3 =收集(D2);谁
名称大小字节类D1 50x50 733 distributed D2 1000x1000 733 distributed D3 1000x1000 8000000 double Nlarge 1x1 8 double Nsmall 1x1 8 double

从数据存储创建分布式阵列

这个例子展示了如何使用数据存储.首先使用一个示例数据集创建一个数据存储。这个数据集太小,无法显示数据在工人之间的平均划分。要模拟大型数据集,可以使用repmat

文件= repmat ({“airlinesmall.csv”} 10 1);ds = tabularTextDatastore(文件);

选择示例变量。

ds。SelectedVariableNames = {“DepTime”“DepDelay”};ds。TreatAsMissing =“NA”

通过并行读取数据存储创建一个分布式表。将数据存储分区为每个工作者一个分区。然后每个worker从对应的分区读取所有数据。文件必须位于工人可以访问的共享位置。

dt =分布式(ds);
使用'local'配置文件启动并行池(parpool)…与4名工人相连。

最后,显示关于分布式表的摘要信息。

总结(dt)
变量:DepTime: 1,235,230×1 double取值:min 1 max 2505 NaNs 23,510 DepDelay: 1,235,230×1 double取值:min -1036 max 1438 NaNs 23,510

从复合数组创建分布式数组

启动一个并行的工人池并创建一个复合通过使用数组spmd

p = parpool (“本地”4);
使用'local'配置文件启动并行池(parpool)…连接到并行池(工人数量:4)。
spmdC =兰德(3、labindex-1);结束C
[1] C = Lab 1: class = double, size = [3 3] C = Lab 2: class = double, size = [3 3]

创建分布式数组复合数组,使用分布式函数。对于本例,将条目分布在第2维上。

分布式(C, d = 2)
D = 0.6383 0.9730 0.2934 0.3241 0.9401 0.1897 0.5195 0.7104 0.1558 0.0078 0.3231 0.3685 0.1398 0.3614 0.3421 0.9383 0.3569 0.5250
spmdd结束
实验1:该worker不存储d的任何元素。实验2:该worker存储d(:,1)。LocalPart: [3x1 double] Codistributor: [1x1 codistributor1d] Lab 3:这个工人存储d(:,2:3)。LocalPart: [3x2 double] Codistributor: [1x1 codistributor1d] Lab 4:这个工人存储d(:,4:6)。LocalPart: [3x3 double] Codistributor: [1x1 codistributor1d]

完成计算后,删除并行池。

删除(p);

提示

  • 在现有并行池的工作者上创建一个分布式数组。如果没有池,分布式启动一个新的并行池,除非在并行首选项中禁用了自动启动池。如果没有平行池和分布式不能启动一个,结果是客户端工作空间中的完整数组。