主要内容

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

gplus

(不推荐)在 spmd 代码块中添加来自工作单元的数组

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

    说明

    C = gplus(A) 将存储在当前 A 代码块或通信作业中的每个工作单元上的数组 spmd 添加。

    提示

    当您使用 parforparfeval 卸载计算时,每个计算一次仅由一个工作单元运行。这些工作单元都是独立的,彼此之间不通信。如果对这些工作单元使用 gplus,那么 C 就等于 A

    A 在每个工作单元上都有兼容的大小时,函数 gplus 会添加数组。

    如果 numlabs 等于 1,则 C 等于 Anumlabs 等于 1(在 spmd 代码块或通信作业之外)。

    示例

    C = gplus(A,destination) 计算数组的总和并将结果存储在仅一个工作单元上。在 labindex 等于 destination 的工作单元上,C 等于总和。在所有其他工作单元上,C[]

    示例

    全部折叠

    此示例显示如何使用 gplusspmd 代码块中添加每个工作单元持有的标量。

    创建一个有 4 个工作单元的并行池。

    parpool(4);

    当您在创建并行池后执行 spmd 代码块时,默认情况下,池中所有可用的工作单元都将运行 spmd 代码块内的代码。

    spmd 代码块中的每个工作单元上运行 labindex,并将结果存储在标量 A 中。使用 gplus 将每个工作单元的 A 值相加。

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

    spmd
        A = labindex;
        C = gplus(A);
    end
    disp(C{1})
         10

    输入参数

    全部折叠

    输入数组,指定为标量、向量、矩阵或多维数组。

    示例: magic(3)

    目标工作单元的索引,指定为正整数标量。该值必须小于或等于 numlabs 给出的值,即运行当前 spmd 代码块或通信作业的工作单元程序的数量。当指定时,gplus(A,destination) 的结果仅存储在一个工作单元上。在 labindex 等于 destination 的工作单元上,C 等于总和。在所有其他工作单元上,C[]

    示例: 1

    算法

    当您使用 gplus(A) 时,每个工作单元上的 A 的值都会添加到其他工作单元上的值中。

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

    版本历史记录

    在 R2006b 中推出

    全部折叠

    另请参阅