主要内容

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

spmdBroadcast

发送数据给 spmd 代码块中的所有工作单元

自 R2022b 起

    说明

    B = spmdBroadcast(source,A) 将数据 A 发送给当前 spmd 代码块或通信作业中的每个工作单元。

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

    当前 spmd 代码块中索引等于源的工作单元广播数据。要获取工作单元索引,请使用 spmdIndex 函数。

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

    示例

    B = spmdBroadcast(source) 在运行当前 spmd 代码块或通信作业的每个工作单元上接收数据 B。数据 B 等于从索引等于 A 的工作单元发送的数据 source

    示例

    示例

    全部折叠

    此示例显示如何在 spmd 代码块中将数组从一个工作单元广播到其他工作单元。

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

    parpool(4);

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

    创建一个 spmd 代码块。在索引等于 1 的工作单元上,创建一个数组。使用 spmdBroadcast 将数组发送给所有工作单元。在每个其他工作单元上,使用 spmdBroadcast 来接收数组。

    spmd
        source = 1;
        if spmdIndex == source
            A = magic(3);
            B = spmdBroadcast(source, A);
        else
            B = spmdBroadcast(source);
        end
        B
    end
    Worker 1: 
      
      B =
      
           8     1     6
           3     5     7
           4     9     2
      
    Worker 2: 
      
      B =
      
           8     1     6
           3     5     7
           4     9     2
      
    Worker 3: 
      
      B =
      
           8     1     6
           3     5     7
           4     9     2
      
    Worker 4: 
      
      B =
      
           8     1     6
           3     5     7
           4     9     2
      

    在客户端上,检查 Composite A。只有索引为 1 的工作单元包含 A 的定义。

    A
     
    A =
     
       Worker 1: class = double, size = [3  3]
       Worker 2: No data
       Worker 3: No data
       Worker 4: No data
     

    输入参数

    全部折叠

    发送数据的工作单元的索引,指定为正整数。该值必须大于或等于 1 且小于或等于运行当前 spmd 代码块的工作单元数量。要确定运行当前 spmd 代码块的工作单元数量,请使用 spmdSize 函数。spmdSize 函数在 spmd 代码块或通信作业之外返回值 1。

    示例: 1

    从索引等于 source 的工作单元发送的数据,指定为任何可以保存和加载的 MATLAB 变量。

    示例: magic(3)

    输出参量

    全部折叠

    在工作单元上返回的数据,指定为标量、向量、矩阵、多维数组、表或时间表。

    提示

    调用 spmdBroadcast 的工作单元可能会先于其他工作单元完成执行。当您需要在 spmd 代码块或通信作业中同步工作单元时,例如当您关闭共享资源时,在调用 spmdBroadcast 之后使用 spmdBarrier

    扩展功能

    全部展开

    版本历史记录

    在 R2022b 中推出