收集

将分布式数组或gpuArray传输到本地工作区

描述

例子

X =收集(一个)可以对以下数组数据进行操作:

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

  • 在分布式数组中,在spmd语句:集合的元素一个从多个工作人员到本地工作区,并将它们分配给X

  • 在一个共分布的数组中spmd陈述或沟通作业:集合的元素一个并将它们复制到X在每一个工人。

你可以叫收集其他数据类型,如tall数组(参见收集(高))。如果数据类型不支持收集,则万博1manbetx收集没有效果。

收集GPU阵列或分布式阵列的成本可能很高,而且通常没有必要,除非你需要将你的结果用于不支持这些类型阵列的函数。万博1manbetx有关函数支持的更多信息,请参见万博1manbetx在GPU上运行MATLAB函数使用分布式数组运行MATLAB函数

X =收集(gpuArray (X)),X =收集(分布式(X)),或X =收集(codistributed (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)收集codistributed数组C1, C2,…,Cn到相应的输出X1, X2,…,Xn,所有元素都在worker上实验室。输入参数和输出参数的数量必须匹配。

例子

全部折叠

收集一个GPU操作的结果到MATLAB®工作区。

G = gpuArray (rand (1024 1));F = sqrt (G);%输入和输出都是gpuArrayW =收集(G);%返回数组到工作空间
名称大小字节类F 1024x1 108 gpuArray G 1024x1 108 gpuArray W 1024x1 8192双

从一个分布式数组中收集所有元素D到客户端。

n = 10;D =分布式(魔法(n));%将数组分配给workerM =聚(D)返回数组到客户端

在你的工人之间分布一个魔术方块,然后收集整个矩阵到每个工人,然后到客户端。这段代码的结果是M =魔法(n)对所有工人和客户。

n = 10;spmdC = codistributed(魔法(n));M =收集(C)收集所有元素到所有工人结束S =收集(C)%将元素收集到客户端

集合的所有元素C用于不能跨分布式数组执行的操作。

n = 10;spmdC = codistributed(魔法(n));=收集(C, 1);如果labindex = = 1这个神奇的平方的特征和:characteristicSum = (1: n ^ 2) / n;%确保对角和等于%和特点:areDiagonalsEqual = isequal(跟踪(出),跟踪(flipud ()), characteristicSum)结束结束
实验一:对角线顺序= 1

输入参数

全部折叠

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

提示

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

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

介绍了R2006b