主要内容

收集

将分布式阵列或gpu阵列转移到本地工作区

描述

例子

集合(一个可以操作以下数组数据:

  • 在gpuArray上:传递元素一个从GPU到本地工作区,并分配给它们X

  • 在分布式阵列上,在spmd语句:集合元素一个从多个工作者到本地工作区,并将它们分配到X

  • 在一个共分布数组中spmd陈述或沟通工作:集合…的要素一个把它们复制成X对每一个工人。

你可以打电话收集其他数据类型,例如高数组(参见收集(高)).如果数据类型不支持收集,则金宝app收集没有效果。

收集GPU阵列或分布式阵列的成本很高,通常没有必要,除非你需要使用不支持这些类型的阵列的函数。金宝app有关函数支持的更多信息,请参见金宝app在图形处理器上运行MATLAB函数运行MATLAB函数与分布式数组

X = gather(gpuArray(X))X =集合(分布的),或X =聚集(共分布(X))返回原始数组X

(X1, X2,…,Xn] = gather(A1,A2,...,,Xn)收集多个数组A1, A2,…,,对应的输出X1, X2,…,Xn.输入参数和输出参数的数量必须匹配。

例子

X =集合(C,实验室)转换共分布数组C到一个变体数组X,这样所有的元素都包含在worker上实验室,X是所有其他工位上的0 × 0空双工。

(X1, X2,…,Xn] = gather(C1,C2,...,Cn,lab)收集共分布数组C1, C2,…,Cn转化为相应的输出X1, X2,…,Xn,所有元素都在worker上实验室.输入参数和输出参数的数量必须匹配。

例子

全部折叠

将GPU操作的结果收集到MATLAB中®工作区。

G = gpuArray(rand(1024,1));F =√(G);%输入和输出都是gpuArrayW =集合(G);返回数组到工作区
名称大小字节类F 1024x1 108 gpuArray G 1024x1 108 gpuArray W 1024x1 8192 double

从分布式数组中收集所有元素D在客户机上。

N = 10;D =分布式(magic(n));将数组分配给工人M =聚集(D)返回数组到客户端

在你的工人中分配一个魔方,然后将整个矩阵聚集到每个工人,然后到客户端。此代码的结果相当于魔术(n)所有员工和客户。

N = 10;spmdC =共分布(magic(n));M =聚集(C)为所有工人收集所有元素结束S =聚集(C)收集元素到客户端

收集所有的元素C到工作者1上,用于不能跨分布式数组执行的操作。

N = 10;spmdC =共分布(magic(n));(C,1);如果Labindex == 1%此魔方的特征和:characteristicSum = sum(1:n^2)/n;%确保对角线和等于%特征和:areDiagonalsEqual = isequal...(跟踪(出),跟踪(flipud ()), characteristicSum)结束结束
实验1:areDiagonalsEqual = 1

输入参数

全部折叠

要收集的数组,指定为gpuArray、分布式阵列或共分布式阵列。

提示

请注意,收集分别在其执行的所有worker的工作空间或MATLAB客户端上组装共分布或分布式数组,但不能两者都装配。如果你正在使用收集在一个spmd语句,则可以在客户机上通过其对应的复合对象;看到使用复合材料访问工作者变量.如果你在跑步收集在通信作业中,可以将收集的数组作为任务的输出参数返回给客户端。

随着收集函数需要所有worker之间的通信,您不能通过将函数放在一个条件语句中来将所有worker的数据收集到单个worker上如果labindex == 1

在R2006b中引入