Main Content

codistributed

並列プールのワーカーに分散された配列要素にアクセスする

    説明

    並列プール内のワーカー間で分割されている配列は、codistributed 配列オブジェクトとしてワーカーからアクセスできます。spmd ステートメント内または通信ジョブのタスク関数内から作成されたワーカー上の対話型分散配列オブジェクトには、クライアント上の分散配列としてアクセスします。

    作成

    関数 codistributed または関数 codistributed.build を使用して codistributed オブジェクトを作成します。

    説明

    C = codistributed(X) は既定の分散スキームを使用して、複製された配列 X を分散し、対話型分散配列 C を返します。X は複製された配列でなければなりません。つまり、すべてのワーカーで同じ値をもたなければなりません。配列 C のサイズは X のサイズと同じです。

    C = codistributed(X,workerIndex) は既定の対話型分散を使用して、workerIndex で特定されたワーカーにあるローカル配列 X を分散します。ローカル配列 X はすべてのワーカーで定義しなければなりませんが、この関数は WorkerIndex のみを使用して C を作成します。size(C)X のサイズと同じです。

    C = codistributed(X,codist) は対話型分散 codist によって定義された分散スキームを使用して、複製された配列 X を分散します。X は複製された配列でなければなりません。つまり、すべてのワーカーで同じ値をもたなければなりません。C のサイズは X のサイズと同じです。対話型分散オブジェクトの作成の詳細については、codistributor1d および codistributor2dbc を参照してください。

    C = codistributed(X,workerIndex,codist) は対話型分散 codist を使用して、workerIndex で特定されたワーカーにあるローカル配列 X を分散します。ローカル配列 X はすべてのワーカーで定義しなければなりませんが、この関数は WorkerIndex のみを使用して C を作成します。size(C)X のサイズと同じです。

    C = codistributed(C1,codist) は、既に対話型分散されている配列 C1 を受け入れ、対話型分散 codist で定義された分散スキームに従って C に再分散します。この構文は C = redistribute(C1,codist) と等価です。C1 の既存の分散スキームが codist で指定された分散スキームと同じである場合、結果 C は入力 C1 と同じです。

    入力引数

    すべて展開する

    分散する配列。配列として指定します。

    対話型分散。codistributor1d オブジェクトまたは codistributor2dbc オブジェクトとして指定します。対話型分散の作成の詳細については、codistributor1d および codistributor2dbc を参照してください。既定の分散スキームを使用する際に、引数なしで対話型分散コンストラクターを指定することができます。

    ローカル配列が保存されるワーカーのインデックス。正の整数スカラーとして指定します。

    データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    再分散する対話型分散配列。codistributed 配列として指定します。

    出力引数

    すべて展開する

    並列プール内のワーカーの部分に保存されている対話型分散配列

    オブジェクト関数

    gather分散配列、Composite オブジェクト、または gpuArray オブジェクトをローカル ワークスペースに転送する
    getCodistributor既存の対話型分散配列の対話型分散オブジェクト
    getLocalPart対話型分散配列のローカル部分
    globalIndices対話型分散配列のローカル部分のグローバル インデックス
    Infすべて Inf 値からなる対話型分散配列を作成
    iscodistributed対話型分散配列に対し true を返す
    redistribute別の分散スキームにより対話型分散配列を再分散する

    対話型分散配列用のオブジェクト関数は多すぎるため、ここには記載しません。大半は MATLAB® の組み込み関数に似ており、動作も同じです。オブジェクト関数の完全な一覧については、分散配列を使用した MATLAB 関数の実行を参照してください。

    オブジェクト関数のうち、配列自体の特性を調べるためのものがいくつかあります。そのほとんどは同名の MATLAB 関数と同様に動作します。

    iscodistributed対話型分散配列に対し true を返す
    isreal配列で複素数ストレージを使用するかどうかを判別
    isUnderlyingType入力に基となるデータ型が指定されているかどうかを判別
    length最大の配列の次元の長さ
    ndims配列の次元数
    size配列サイズ
    underlyingType配列の動作を決定する基となるデータの型

    すべて折りたたむ

    既定の分散スキームを使用して 1000 行 1000 列の対話型分散配列 C1 を作成します。

    parpool('Processes',4)
    spmd
        N = 1000;
        X = magic(N);          
        C1 = codistributed(X); 
    end

    配列 X はすべてのワーカーに複製され、配列 C1 はワーカー間で分割されます。

    codistributor1d 分散スキームを使用して行単位で (最初の次元で) 分散した 1000 行 1000 列の対話型分散配列 C2 を作成します。

    spmd
        N = 1000;
        X = magic(N);
        C2 = codistributed(X,codistributor1d(1));
    end

    ヒント

    関数 gathercodistributed の逆演算を実行します。関数 gather を使用して、クライアントのワーク スペースに対話型分散配列を取得します。

    代替機能

    これらの MATLAB 関数のいずれかを使用して、spmd コードまたは通信ジョブ タスクから明示的に対話型分散配列を作成することもできます。

    バージョン履歴

    R2008b で導入