主要内容

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

spmdPlus

spmd 代码块中的工作单元添加数组

自 R2022b 起. 建议替换 gplus.

    说明

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

    当您使用 parforparfeval 卸载计算时,每次只有一个工作单元运行每个计算。这些工作单元都是独立的,彼此之间不通信。如果将 spmdPlus 应用于这些工作单元,该函数将不起作用。

    仅当 A 在每个工作单元上有兼容的大小时,您才可以使用 spmdPlus

    如果 source 等于工作单元索引,则 C 等于 A

    示例

    C = spmdPlus(A,destination) 添加数组并将结果存储在仅一个工作单元上。在索引等于 destination 的工作单元上,C 等于总和。在所有其他工作单元上,C[]。要获取工作单元索引,请使用 spmdIndex 函数。

    示例

    全部折叠

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

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

    parpool(4);

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

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

    除非您指定目标,否则 spmdPlus 函数会将结果存储在每个工作单元上。在客户端上,C 是一个 Composite 对象。要获得结果,请索引到 Composite 对象。

    spmd
        A = spmdIndex;
        C = spmdPlus(A);
    end
    disp(C{1})
         10

    输入参数

    全部折叠

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

    示例: magic(3)

    目标工作单元的索引,指定为正整数。此输入的值必须小于或等于运行当前 spmd 代码块或通信作业的工作单元数量。

    当您指定此输入时,函数仅将 C 的值存储在一个工作单元上。在索引等于 destination 的工作单元上,C 等于总和。在所有其他工作单元上,C[]

    示例: 1

    输出参量

    全部折叠

    spmd 代码块或通信作业中每个工作单元的数组总和,返回为与 A 相同类型的任何 MATLAB® 变量。

    如果指定 destination,则该函数将 C 的值存储在索引等于 destination 的工作单元上。在所有其他工作单元上,C[]

    算法

    该图显示了当您调用 spmdPlus(A) 时,spmdCat 函数如何将 A 添加到其他工作单元的值中。

    Figure shows how four workers combine arrays specified as A into a single array, C.

    扩展功能

    全部展开

    版本历史记录

    在 R2022b 中推出

    另请参阅

    |