Main Content

spmdPlus

spmd ブロックのワーカーからの配列を加算する

R2022b 以降. 次よりも推奨: gplus.

    説明

    C = spmdPlus(A) は、現在の spmd ブロックまたは通信ジョブの各ワーカーに保存されている配列 A を加算し、結果 C をすべてのワーカーに保存します。

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

    spmdPlus は、各ワーカー上で A のサイズに互換性がある場合にのみ使用できます。

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

    C = spmdPlus(A,destination) は、配列を加算し、結果を 1 つのワーカーにのみ保存します。インデックスが destination と等しいワーカーでは、C はこの和と等しくなります。他のすべてのワーカーでは、C[] です。ワーカー インデックスを取得するには、関数 spmdIndex を使用します。

    すべて折りたたむ

    この例では、spmdPlus を使用して、spmd ブロックの各ワーカー上に保持されているスカラーを加算する方法を説明します。

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

    parpool(4);

    並列プールの作成後に spmd ブロックを実行すると、既定ではそのプール内のすべての使用可能なワーカーで、spmd ブロック内のコードが実行されます。

    spmd ブロック内の各ワーカー上で spmdIndex を実行し、結果をスカラー A に保存します。spmdPlus を使用して、各ワーカーからの A の値を加算します。

    保存先を指定しない限り、関数 spmdPlus は結果を各ワーカーに保存します。クライアント上での CComposite オブジェクトです。結果を取得するには、Composite オブジェクトにインデックスを付けます。

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

    入力引数

    すべて折りたたむ

    入力配列。スカラー、ベクトル、行列、または多次元配列として指定します。

    例: magic(3)

    ターゲット ワーカーのインデックス。正の整数として指定します。この入力の値は、現在の spmd ブロックまたは通信ジョブを実行しているワーカーの数以下でなければなりません。

    この入力を指定した場合、関数は C の値を 1 つのワーカーにのみ保存します。インデックスが destination と等しいワーカーでは、C はこの和と等しくなります。他のすべてのワーカーでは、C[] です。

    例: 1

    出力引数

    すべて折りたたむ

    spmd ブロックまたは通信ジョブの各ワーカーにある配列の和。A と同じ型の任意の MATLAB® 変数として返されます。

    destination を指定した場合、関数は C の値を、インデックスが destination と等しいワーカーに保存します。他のすべてのワーカーでは、C[] です。

    アルゴリズム

    次の図は、spmdPlus(A) を呼び出したときに、関数 spmdCatA を他のワーカー上の値にどのように加算するかを示しています。

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

    拡張機能

    バージョン履歴

    R2022b で導入