Main Content

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 次元ブロック サイクリック codistributor2dbc 対話型分散オブジェクトが形成されます。

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);