Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

codistributor2dbc

対話型分散配列の 2 次元ブロックサイクリック分散スキーム

    説明

    codistributor2dbc オブジェクトは、codistributed 配列オブジェクトの 2 次元ブロックサイクリック分散スキームを定義します。2 次元ブロックサイクリック対話型分散では、2 次元行列の分散のみ行うことができます。これは矩形の計算ワーカー グリッド上で 2 つの添字によりブロックを巡回させて、行列を分散します。2 次元ブロックサイクリック分散、既定のパラメーター、およびブロック サイズとワーカー グリッドの関係の詳細については、2 次元での分散を参照してください。2 次元ブロックサイクリック対話型分散は、並列行列計算ソフトウェア ライブラリ ScaLAPACK で使用されています。

    作成

    説明

    codist = codistributor2dbc は、既定のワーカー グリッドとブロック サイズを使用して、2 次元ブロックサイクリック codistributed2dbc 対話型分散オブジェクトを作成します。

    codist = codistributor2dbc(WorkerGrid) は、指定した WorkerGrid 値および既定のブロック サイズを使用して 2 次元ブロックサイクリック対話型分散オブジェクトを作成します。

    codist = codistributor2dbc(WorkerGrid,BlockSize) は、指定した WorkerGrid および BlockSize の値を使用して 2 次元ブロックサイクリック対話型分散オブジェクトを作成します。

    codist = codistributor2dbc(WorkerGrid,BlockSize,Orientation)Orientation プロパティも指定しています。

    上記の構文で形成される対話型分散は、いずれもグローバル サイズが指定されていないため、完全なものではありません。このような方法で作成された対話型分散は、対話型分散配列の作成時にテンプレート対話型分散として他の関数の引数の形で使用します。

    codist = codistributor2dbc(WorkerGrid,BlockSize,Orientation,gsize) は、グローバル サイズ gsize の対話型分散オブジェクトを作成します。

    形成される対話型分散オブジェクトは完全です。このように作成された対話型分散を使用して、関数 codistributed.build によってそのローカル部分から対話型分散配列を作成します。各引数で既定値を使用するには、WorkerGridcodistributor2dbc.defaultWorkerGrid として、BlockSizecodistributor2dbc.defaultBlockSize として、そして Orientationcodistributor2dbc.defaultOrientation として指定します。

    入力引数

    すべて展開する

    対話型分散配列のグローバル サイズ。整数として指定します。

    プロパティ

    すべて展開する

    codistributor2dbc オブジェクトのワーカー グリッド。ワーカー グリッドの行と列を定義する 2 要素ベクトルとして指定します。行の数に列の数を乗算した値は、対話型分散配列のワーカーの数に等しくなる必要があります。

    codistributor2dbc オブジェクトのブロック サイズ。正の整数として指定します。このプロパティは、codistributor2dbc オブジェクトに関連付けられている ScaLAPACK ブロック サイズです。

    codistributor2dbc オブジェクトの向き。次の値のいずれかとして指定します。

    • 'row' – 行方向

    • 'col' – 列方向

    データ型: char

    オブジェクト関数

    codistributed.cell対話型分散 cell 配列を作成する
    codistributed.colonコロン演算の分散
    codistributed.spallocスパース対話型分散行列にスペースを割り当てる
    codistributed.speye対話型分散スパース単位行列を作成する
    codistributed.sprand一様分布する疑似乱数値からなるスパース対話型分散配列を作成する
    codistributed.sprandn正規分布した疑似乱数値からなる対話型分散スパース配列を作成する
    codistributor2dbc.defaultWorkerGrid2 次元ブロックサイクリック分散配列の既定の計算グリッド
    eye対話型分散単位行列の作成
    falselogical 0 (false) からなる対話型分散配列を作成
    globalIndices対話型分散配列のローカル部分のグローバル インデックス
    Infすべて Inf 値からなる対話型分散配列を作成
    isComplete対話型分散オブジェクトが完全な場合に true を返す
    NaNすべて NaN 値からなる対話型分散配列を作成
    onesすべて 1 からなる対話型分散配列を作成
    rand一様分布する乱数からなる対話型分散配列を作成
    randn正規分布する乱数からなる対話型分散配列を作成
    sparse対話型分散スパース行列の作成
    truelogical 1 (true) からなる対話型分散配列を作成する
    zerosすべて 0 からなる対話型分散配列を作成する

    すべて折りたたむ

    codistributor2dbc オブジェクトを使用して、1 の値からなる NN 列の行列を作成します。

    N = 1000;
    spmd
        codistr = codistributor2dbc;  
        D = ones(N,codistr);
    end    

    完全指定の codistributor2dbc オブジェクトを使用して、NN 列の対話型分散行列をそのローカル部分から作成します。

    N = 1000;

    ワーカー グリッドおよびブロック サイズの既定値を使用し、ワーカー グリッドの向きとグリッド サイズを指定します。

    spmd
        codistr = codistributor2dbc(...
                     codistributor2dbc.defaultWorkerGrid, ...
                     codistributor2dbc.defaultBlockSize, ...
                     'row',[N,N]); 
    end

    対話型分散オブジェクトでglobalIndicesメソッドを使用して、対話型分散配列自体を作成する前にその配列のローカル部分のグローバル インデックスを取得します。lengthを使用して、最大のグローバル インデックスの長さを取得し、それを対話型分散配列のローカル部分のサイズとして設定します。関数codistributed.buildを使用して対話型分散配列を作成します。

    spmd
        myLocalSize = [length(globalIndices(codistr,1)), ...
                       length(globalIndices(codistr,2))];
        myLocalPart = spmdIndex*ones(myLocalSize);
        D = codistributed.build(myLocalPart,codistr);
    end

    次に、関数spyを使用して、どの要素がワーカー 2 に格納されているかを可視化します。

    spy(D==2)

    スパース パターンで、ワーカー 2 に格納されている配列 D の要素の分散が示されます。

    バージョン履歴

    R2009b で導入