主要内容

创建和使用分布式阵列

如果数据当前在本地计算机的内存中,则可以使用分布式函数将现有数组从客户端工作区分发到并行池的工作人员。分布式数组使用并行池中多个工作人员的组合内存来存储数组的元素。有关分区数据的其他方法,请参见将数组分配给并行工作器.您将整个数组作为一个单独的实体进行操作,但是,工作人员仅在他们所在的数组部分进行操作,并在必要时在他们之间自动传输数据。您可以使用分布式数组以扩展大数据计算。考虑分布式当您访问集群时,可以使用数组,因为您可以组合集群中多台机器的内存。

一个分布式数组是一个单独的变量,在并行池中由多个worker分割。您可以将这个变量作为一个单独的实体来处理,而不必担心它的分布式性质。探索可用的功能分布式并行计算工具箱中的数组:使用分布式数组运行MATLAB函数

当你创建分布式数组,则无法控制分发的详细信息。另一方面,codistributed数组允许您控制分布的所有方面,包括维度和分区。接下来,您将学习如何创建两者分布式codistributed数组。

创建分布式阵列

你可以用不同的方式创建分布式数组:

  • 使用分布式函数将现有数组从客户端工作区分发到并行池的工作人员。

  • 您可以直接在worker上构造一个分布式数组。您不需要首先在客户端中创建数组,这样可以减少客户端工作空间的内存需求。可用的功能包括眼睛(___“分布式”)兰德(___“分布式”)等。有关完整列表,请参见分布式对象引用页面。

  • 创建一个codistributed在一个数组spmd声明中,看到单程序多数据(spmd).然后访问它作为一个分布式外的数组spmd声明。这允许您使用除默认方案之外的其他分布方案。

在本例中,您在客户端工作区中创建了一个数组,然后将其转换为一个分布式数组:

parpool (“本地”4)%创建池一个=魔法(4);%创造魔法4 × 4矩阵B =分布式(A);分配给工人B%在客户端查看结果。% B在这里是一个分布式数组。删除(gcp)%停止池

您已经创建了B作为一个分布式数组,按并行池中的工作人员进行分割。如图所示。

创建Codistributed数组

不像分布式数组,codistributed数组允许您控制分布的所有方面,包括维度和分区。您可以创建codistributed以不同的方式排列:

  • 对较大的阵列进行分区-以一个复制到所有worker上的大数组开始,并对它进行分区,以便各个块分布在各个worker上。当您有足够的内存来存储初始复制数组时,这是非常有用的。

  • 从更小的数组构建-从存储在每个worker上的更小的复制数组开始,并将它们合并,使每个数组成为更大的协分布数组的一个片段。这种方法减少了内存需求,因为它允许您从较小的块构建一个协同分布数组。

  • MATLAB构造函数的使用-使用任何MATLAB®构造器函数如兰德0使用协分配器对象参数。这些函数提供了一种只需一步就可以构造任意大小的协分布数组的快速方法。

在本例中,您创建了一个codistributed在一个数组spmd语句,使用非默认的分布方案。首先,定义沿第三维的一维分布,工人1上有4个部分,工人2上有12个部分。然后创建一个3 × 3 × 16的零数组。

parpool (“本地”, 2)%创建池spmdcodist = codistributor1d(3(4、12));Z = 0 (codist 3, 3, 16日);Z = Z + labindex;结束Z%在客户端查看结果。% Z是一个分布式数组。删除(gcp)%停止池

有关协作分布式数组的详细信息,请参见使用协同分布数组

相关的话题