主要内容

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

labBroadcast

(不推荐)将数据发送给 spmd 代码块中的所有工作单元

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

    说明

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

    提示

    当您使用 parforparfeval 卸载计算时,每个计算一次仅由一个工作单元运行。这些工作单元都是独立的,彼此之间不通信。如果对这些工作单元使用 labBroadcast,该函数无效。

    数据从 labindex 等于 source 的 工作单元广播。

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

    示例

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

    示例

    示例

    全部折叠

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

    创建一个有 4 个工作单元的并行池。默认情况下,所有进程支持的池都支持 labBroadcast

    parpool(4);

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

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

    spmd
        source = 1;
        if labindex == source
            A = magic(3);
            B = labBroadcast(source, A);
        else
            B = labBroadcast(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。数组 A 仅在 labindex 等于 1 的工作单元上定义。

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

    输入参数

    全部折叠

    发送数据的工作单元的索引,指定为正整数标量。该值必须大于或等于 1 且小于或等于 numlabs

    示例: 1

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

    示例: magic(3)

    输出参量

    全部折叠

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

    提示

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

    扩展功能

    全部展开

    版本历史记录

    在 R2006a 之前推出

    全部折叠

    另请参阅