Main Content

spmdBroadcast

spmd ブロックのすべてのワーカーにデータを送信する

R2022b 以降

    説明

    B = spmdBroadcast(source,A) は、現在の spmd ブロックまたは通信ジョブ内のすべてのワーカーにデータ A を送信します。

    parforparfeval を使用して計算をオフロードする場合、各計算は一度に 1 つのワーカーによってのみ実行されます。これらのワーカーは独立しており、相互の通信は行われません。これらのワーカーに spmdBroadcast を適用する場合、この関数による影響はありません。

    現在の spmd ブロックにおけるインデックスが source と等しいワーカーがデータをブロードキャストします。ワーカー インデックスを取得するには、関数 spmdIndex を使用します。

    source がワーカー インデックスと等しい場合、BA と等しくなります。

    B = spmdBroadcast(source) は、現在の spmd ブロックまたは通信ジョブを実行している各ワーカー上でデータ B を受信します。データ B は、インデックスが source と等しいワーカーから送信されるデータ A と等しくなります。

    すべて折りたたむ

    この例では、spmd ブロックにおいて、あるワーカーから他のワーカーへ配列をブロードキャストする方法を説明します。

    4 つのワーカーをもつ並列プールを作成します。

    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 を調べます。A の定義が含まれているのは、インデックスが 1 であるワーカーだけです。

    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)

    出力引数

    すべて折りたたむ

    ワーカーで返されるデータ。スカラー、ベクトル、行列、多次元配列、table、または timetable として指定します。

    ヒント

    spmdBroadcast を呼び出すワーカーは、他のワーカーより先に実行を終了する場合があります。共有リソースを閉じる場合など、spmd ブロックまたは通信ジョブのワーカーを同期する必要があるときは、spmdBroadcast を呼び出した後に spmdBarrier を使用します。

    拡張機能

    バージョン履歴

    R2022b で導入