根据在存储数据拟合如何,选择下列方法之一:
数据存储
如果你的数据不适合在本地计算机的内存,但不适合在群集的内存,你可以使用数据存储
与分散式
函数来创建分布式数组和你的员工之间的数据分区。
此示例示出了如何创建和使用加载分布式数组数据存储
。创建使用航空公司的航班数据的表格文件的数据存储。这组数据是太小,无法显示在工人中的数据相等的分区。为了模拟一个大的数据集,通过人为地增加数据存储的大小repmat
。
文件= repmat({'airlinesmall.csv'},10,1);DS = tabularTextDatastore(文件);
选择示例性变量。
ds.SelectedVariableNames = {'DepTime','DepDelay'};ds.TreatAsMissing ='NA';
通过并行读取数据存储创建一个分布式表。分区中的数据存储与每个工人的一个分区。每个工人随后读取从相应分区中的所有数据。该文件必须在是由工人访问的共享位置。
DT =分布式(DS);
开始使用“本地”的个人资料...连接到4名工人并行池(parpool)。
显示关于分布式表的汇总信息。
摘要(DT)
变量:DepTime:1235230×1双值:分1周最大值2505米的NaN 23510 DepDelay:1235230×1双值:分钟-1036最大值1438米的NaN 23510
确定高大表的大小。
大小(DT)
ANS = 1235230 2
返回的前几行DT
。
头(DT)
ANS = DepTime DepDelay _______ ________ 642 12 1021 1 2055 20 1332 12 629 1446 -1 63 928 -2 859 -1 1833 1041 3 1
最后,检查多少数据每个工人已加载。
SPMD,DT,结束
实验1:这个工人店DT2(1:370569,:)。LocalPart依照:[370569×2表] Codistributor:[1×1 codistributor1d]实验2:这个工人存储DT2(370570:617615,:)。LocalPart依照:[247046×2表] Codistributor:[1×1 codistributor1d]实验3:这个工人存储DT2(617616:988184,:)。LocalPart依照:[370569×2表] Codistributor:[1×1 codistributor1d]实验4:这个工人存储DT2(988185:1235230,:)。LocalPart依照:[247046×2表] Codistributor:[1×1 codistributor1d]
请注意,该数据在工人平衡分配。有关详细信息数据存储
见什么是数据存储?(MATLAB)
有关工作流的大数据的详细信息,请参阅选择并行计算解决方案。
如果在你的本地计算机的内存数据拟合,可以使用分布式数组到员工的安全分区中的数据。使用分散式
函数来创建在MATLAB客户端分布式阵列,并将其数据存储在开放式并行池的工人。分布式阵列沿工人中该尺寸分布在一个维度,并尽可能均匀地。创建分布式阵列时,你无法控制分布的细节。
您可以多种方式创建一个分布式数组:
前两种技术不涉及SPMD
在创建数组,但你可以使用SPMD
操作阵列中创建这种方式。例如:
创建在所述客户端的工作区的阵列,然后使之成为分布阵列。
parpool('本地',2)%创建池W =酮(6,6);W =分布(W);%分配给工人SPMDT = W * 2;%计算工人执行,并行。%T和W在这里都codistributed阵列。结束Ť%查看导致客户端。谁是%T和W是这里都分布阵列。删除(GCP)%停止池
另外,您也可以使用codistributed
功能,它允许您控制更多的选项,如尺寸和分区,但往往变得更复杂。您可以创建一个codistributed
阵列由内部的上工人本身执行,或者SPMD
声明或通信工作中。创建一个时codistributed
阵列,可以控制分布的各个方面,包括尺寸和分区。
分布和codistributed阵列之间的关系是透视之一。Codistributed阵列从中执行代码来创建或操纵他们在工人中进行分配。当您在客户端分布式阵列,您可以访问它作为内部的一个codistributed阵列SPMD
声明。当您创建在一个codistributed阵列SPMD
声明中,你可以访问它的客户分布阵列。只要SPMD
声明让你从两个不同的视角访问相同的数组数据。
您可以创建一个codistributed
阵列在几个方面:
使用codistributed
函数内的SPMD
声明或通信作业codistribute数据已经在运行的作业工人存在。
使用任何codistributed功能直接构建在工人codistributed阵列。这种技术不需要数组已经存在于工人。功能包括:
和眼睛
(___, 'codistributed')
。有关完整列表,请参阅兰特
(___, 'codistributed')codistributed
对象引用页面。
创建分布式阵列外部的SPMD
语句,那么访问它里面的一个codistributed阵列SPMD
声明在同一平行池中运行。
创建codistributed阵列内的SPMD
使用非默认的分配方案声明。首先,定义1-d分布沿着第三维,与4份对工人1,和12份对工人2.然后创建一个3×3×16阵列的零。
parpool('本地',2)%创建池SPMDcodist = codistributor1d(3,[4,12]);Z =零(3,3,16,codist);Z = Z + labindex;结束ž%查看导致客户端。%Z是这里的分布式阵列。删除(GCP)%停止池
有关codistributed阵列的更多详细信息,请参阅与Codistributed阵列工作。
codistributed
|数据存储
|分散式
|眼睛
|兰特
|repmat
|SPMD
|高