ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

codistributor2dbc

対話型分散配列に対して 2 次元ブロック サイクリック対話型分散オブジェクトを作成する

構文

codist = codistributor2dbc()
codist = codistributor2dbc(lbgrid)
codist = codistributor2dbc(lbgrid, blksize)
codist = codistributor2dbc(lbgrid, blksize, orient)
codist = codistributor2dbc(lbgrid, blksize, orient, gsize)

説明

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

codist = codistributor2dbc() では、既定のラボ グリッドとブロック サイズを使用して 2 次元ブロック サイクリック対話型分散オブジェクトが形成されます。

codist = codistributor2dbc(lbgrid) では、指定されたラボ グリッドと既定のブロック サイズを使用して 2 次元ブロック サイクリック対話型分散オブジェクトが形成されます。lbgrid はラボ グリッドの行と列を定義する 2 成分ベクトルでなければならず、行数と列数の積は対話型分散配列のワーカー数と等しくなければなりません。

codist = codistributor2dbc(lbgrid, blksize) では、指定されたラボ グリッドとブロック サイズを使用して、2 次元ブロック サイクリック対話型分散オブジェクトが形成されます。

codist = codistributor2dbc(lbgrid, blksize, orient) では方向引数を受け入れます。方向引数の有効な値は、ラボ グリッドの行方向には 'row'、列方向には 'col' となります。既定値は行方向です。

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

codist = codistributor2dbc(lbgrid, blksize, orient, gsize) は、グローバル サイズ gsize の配列を分散する対話型分散オブジェクトを形成します。形成される対話型分散オブジェクトは完全であり、したがって、そのローカル部分から codistributed.build を用いて対話型分散配列を作成するために使用できます。ラボ グリッド、ブロック サイズおよび方向の既定値を使用するには、それぞれに codistributor2dbc.defaultLabGridcodistributor2dbc.defaultBlockSize および codistributor2dbc.defaultOrientation を使って指定します。

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

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

完全指定の codistributor2dbc オブジェクトを使用して、自明な NN 列の対話型分散行列をそのローカル部分から作成します。その上で、どの要素がワーカー 2 に格納されているかを可視化します。

N = 1000;
spmd
    codistr = codistributor2dbc(...
                 codistributor2dbc.defaultLabGrid, ...
                 codistributor2dbc.defaultBlockSize, ...
                 'row', [N, N]);
    myLocalSize = [length(codistr.globalIndices(1)), ...
                   length(codistr.globalIndices(2))]; 
    myLocalPart = labindex*ones(myLocalSize);
    D = codistributed.build(myLocalPart, codistr);
end
spy(D == 2);
この情報は役に立ちましたか?