Main Content

gplus

(非推奨) spmd ブロックのワーカーからの配列を加算する

    gplus は推奨されません。代わりに spmdPlus を使用してください。詳細については、バージョン履歴を参照してください。

    説明

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

    ヒント

    parforparfeval を使用して計算をオフロードする場合、各計算は一度に 1 つのワーカーによってのみ実行されます。これらのワーカーは独立しており、相互の通信は行われません。これらのワーカー上で gplus を使用する場合、CA に等しくなります。

    関数 gplus は、各ワーカー上で A のサイズに互換性があると配列を加算します。

    numlabs1 と等しい場合、CA と等しくなります。numlabs は、spmd ブロックまたは通信ジョブの外部では 1 と等しくなります。

    C = gplus(A,destination) は、配列の和を計算し、結果を 1 つのワーカーにのみ保存します。labindexdestination と等しいワーカーでは、C はこの和と等しくなります。他のすべてのワーカーでは、C[] です。

    すべて折りたたむ

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

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

    parpool(4);

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

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

    gplus を使用する場合、既定では各ワーカーに結果が保存されます。クライアント上では、CComposite 配列です。結果を取得するには、Composite 配列にインデックスを付けます。

    spmd
        A = labindex;
        C = gplus(A);
    end
    disp(C{1})
         10

    入力引数

    すべて折りたたむ

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

    例: magic(3)

    ターゲット ワーカーのインデックス。正の整数スカラーとして指定します。値は、現在の spmd ブロックまたは通信ジョブを実行しているワーカーの数である、numlabs で指定された値以下でなければなりません。指定した場合、gplus(A,destination) の結果は 1 つのワーカー上にのみ保存されます。labindexdestination と等しいワーカーでは、C はこの和と等しくなります。他のすべてのワーカーでは、C[] です。

    例: 1

    アルゴリズム

    gplus(A) を使用すると、各ワーカー上の A の値が他のワーカー上の値に加算されます。

    Diagram showing how four workers combine arrays specified as A into a single array, C.

    バージョン履歴

    R2006b で導入

    すべて折りたたむ

    R2022b: gplus は非推奨

    spmd ブロック内で使用するものであることがわかるように、gplus の名前が spmdPlus に変更されました。gplus は引き続き使用できますが、非推奨になっています。コードを更新するには、gplus のすべてのインスタンスを spmdPlus に置き換えてください。gplus を削除する予定はありません。

    参考