codistributed.build
分散データから対話型分散配列を作成する
構文
D = codistributed.build(L,codist)
D = codistributed.build(L,codist,'noCommunication')
説明
D = codistributed.build(L,codist) は getLocalPart(D) = L を使用して対話型分散配列を形成します。対話型分散配列 D は、ローカル配列 L のコピーをすべて結合した場合と等価なものとして作成されます。分散スキームは codist により指定されます。グローバルなエラー チェックにより、ローカル部分が指定された分散スキームに準拠することが確認されます。対話型分散オブジェクトの作成の詳細については、codistributor1d および codistributor2dbc のリファレンス ページを参照してください。
D = codistributed.build(L,codist,'noCommunication') は、エラー チェック用のワーカー間の通信を実行せずに対話型分散配列を作成します。
codist は完全でなければなりません。それをチェックするには、codist.isComplete() を呼び出します。ローカル部分 L のサイズおよび構造に関する要件は codist のクラスによって異なります。1 次元および 2 次元ブロックサイクリック対話型分散の場合、L のクラスとスパース性はすべてのワーカーで同じでなければなりません。また、ローカル部分 L は codist の globalIndices メソッドで記述されている領域を表さなければなりません。
例
列 ii に値 ii が含まれるように、サイズが 1001 行 1001 列の対話型分散配列を作成します。
spmd N = 1001; globalSize = [N,N]; % Distribute the matrix over the second dimension (columns), % and let the codistributor derive the partition from the % global size. codistr = codistributor1d(2, ... codistributor1d.unsetPartition,globalSize) % On 4 workers, codistr.Partition equals [251,250,250,250]. % Allocate storage for the local part. localSize = [N, codistr.Partition(spmdIndex)]; L = zeros(localSize); % Use globalIndices to map the indices of the columns % of the local part into the global column indices. globalInd = codistr.globalIndices(2); % On 4 workers, globalInd has the values: % 1:251 on worker 1 % 252:501 on worker 2 % 502:751 on worker 3 % 752:1001 on worker 4 % Initialize the columns of the local part to % the correct value. for localCol = 1:length(globalInd) globalCol = globalInd(localCol); L(:,localCol) = globalCol; end D = codistributed.build(L,codistr) end
バージョン履歴
R2009b で導入
参考
codistributor1d | codistributor2dbc | gather | globalIndices | getLocalPart | redistribute | subsasgn | subsref