gather
将分布式数组、Composite
对象或 gpuArray
对象传输到本地工作区
语法
说明
X = gather(
可以对以下数组数据进行操作:A
)
在
gpuArray
上:将A
的元素从 GPU 传输到本地工作区并将它们分配给X
。在分布式数组上,
spmd
语句之外:将来自多个工作进程的A
元素收集到本地工作区并将它们分配给X
。在协同分布数组中,在
spmd
语句或通信作业内:将A
的元素聚集在一起并将它们复制到每个工作进程上的X
中。
您可以在其他数据类型上调用 gather
,例如 tall 数组(参见 gather (tall)
)。如果数据类型不支持收集,则 gather
没有效果。
收集 GPU 数组或分布式数组的成本可能很高,而且通常没有必要,除非您需要将结果与不支持这些类型数组的函数一起使用。有关函数支持的更多信息,请参阅 在 GPU 上运行 MATLAB 函数 或 使用分布式数组运行 MATLAB 函数。
X = gather(gpuArray(X))
、X = gather(distributed(X))
或 X = gather(codistributed(X))
返回原始数组 X
。
[X1,X2,...,Xn] = gather(A1,A2,...,An)
将多个数组 A1,A2,...,An
收集到相应的输出 X1,X2,...,Xn
中。输入参量和输出参量的数量必须匹配。
X = gather(
将协同分布数组 Cd
,destination)Cd
转换为变体数组 X
,使得所有元素都包含在 destination
指定的工作进程上,而 X
在所有其他工作进程上都是一个 0×0 的空双精度数。
[X1,X2,...,Xn] = gather(Cd1,Cd2,...,Cdn,destination)
将协同分布数组 Cd1,Cd2,...,Cdn
收集到相应的输出 X1,X2,...,Xn
中,其中所有元素均位于由 destination
指定的工作进程上。输入参量和输出参量的数量必须匹配。
示例
输入参数
提示
请注意,gather
分别在其执行的所有工作进程的工作区中或 MATLAB 客户端上组装共分布或分布式数组,但不会同时在两者中组装。如果在 spmd
语句中使用 gather
,则可通过其对应的 Composite
对象在客户端访问收集的数组;请参阅 使用复合材料访问工作进程变量。如果您在通信作业中运行 gather
,则可以将收集的数组作为任务的输出参量返回到客户端。
由于 gather
函数需要所有工作进程之间的通信,因此您无法通过将该函数放在条件语句(例如 if spmdIndex == 1
)内来将所有工作进程的数据收集到单个工作进程上。
版本历史记录
在 R2006b 中推出另请参阅
arrayfun
| codistributed
| distributed
| gpuArray
| Composite
| pagefun