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对象在客户端访问收集的数组;请参阅 使用 Composite 访问工作单元变量。如果您在通信作业中运行gather,则可以将收集的数组作为任务的输出参量返回到客户端。由于分布式或共存分布式数组上的
gather函数要求所有工作单元之间进行通信,因此无法通过将该函数放置在if spmdIndex == 1等条件语句中,将所有工作单元的数据收集到一个工作单元中。您可以通过右键点击工作区中的变量,然后选择从 GPU 收集来收集
gpuArray对象。 (自 R2025a 起)
版本历史记录
在 R2006b 中推出另请参阅
arrayfun | codistributed | distributed | gpuArray | Composite | pagefun