主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

gcat

(不推荐)在 spmd 工作单元上连接数组

    不推荐使用 gcat。请改用 spmdCat。有关详细信息,请参阅版本历史记录

    说明

    B = gcat(A) 水平连接在每个运行 spmd 代码块或通信作业的工作单元上定义的数组 A

    当您使用 parforparfevalparfevalOnAll 在并行池上运行代码时,工作单元是独立的并且彼此不会通信。如果您在这些工作单元上使用 gcat,其结果与在客户端上使用 gcat 相同。

    仅当每个工作单元上定义的数组 A 可以沿第二个维度连接时,您才可以使用 gcat

    gcat 沿着第二个维度连接数组,然后将结果存储在所有工作单元上。A 的值取自每个工作单元并按 labindex 顺序连接起来。例如,gcat(labindex) 返回 1:numlabs

    如果 numlabs 等于 1,则 B 等于 A

    示例

    B = gcat(A,dim) 沿维度 dim 连接每个工作单元上定义的数组 A

    仅当数组 A 沿维度 dim 连接且所有数组具有兼容的大小(除操作维度 dim 外,维度的长度都匹配)时,才可以使用 gcat

    B = gcat(A,dim,destination) 连接每个工作单元上定义的数组 A,并将结果仅存储在一个工作单元上。

    示例

    全部折叠

    此示例显示如何使用 gcat 连接 spmd 代码块中每个工作单元持有的标量。

    在默认配置文件上创建一个具有 4 个工作单元的并行池。

    parpool(4);

    创建一个 spmd 代码块。默认情况下,池中的每个工作单元都会运行 spmd 代码块。将每个工作单元上 labindex 返回的值存储为 A,然后使用 gcat 获取每个工作单元上定义的 A 的值并将它们连接起来。

    当您使用 gcat 时,结果默认存储在每个工作单元上。在客户端,结果是一个 Composite 数组。要获得结果,请索引 Composite 数组。

    spmd
        B = gcat(labindex);
    end
    B{1}
    ans =
         1     2     3     4

    输入参数

    全部折叠

    输入数组,指定为标量、向量、矩阵、多维数组、表、时间表或任何支持连接的 MATLAB 变量。

    示例: A = magic(3)

    要运算的维度,指定为正整数标量。例如,如果 A 是所有工作单元的 2×2 矩阵,则 gcat(A,1) 垂直连接创建一个 2*numlabs×2 矩阵。gcat(A,2) 水平连接创建一个 2×2*numlabs 矩阵。

    默认值为 2

    对于表或时间表输入,dim 必须是 1 或 2。

    目标工作单元的索引,指定为正整数标量。该值必须小于或等于在当前 spmd 代码块或通信作业中使用 numlabs 时返回的值。当指定时,运行 B 的结果 B = gcat(A,dim,destination) 仅存储在一个工作单元上。数组 B 仍在所有运行 gcat 的工作单元上定义。在 labindex 等于 destination 的工作单元上,C 是连接的结果。在所有其他工作单元上,C[]

    输出参量

    全部折叠

    输出数组,作为任何 MATLAB 变量返回。

    如果指定 destination,则 B 是工作单元上 labindex 等于 destination 的连接结果。在所有其他工作单元上,B[]

    算法

    当您使用 gcat(A) 时,每个工作单元上的 A 的值会与其他工作单元上的值连接在一起。

    Diagram showing how four workers combine arrays specified as A into a single array, B.

    版本历史记录

    在 R2006b 中推出

    全部折叠

    另请参阅