codistributed.build
从分布式数据创建共存分布式数组
语法
D = codistributed.build(L,codist)
D = codistributed.build(L,codist,'noCommunication')
说明
D = codistributed.build(L,codist)
与 getLocalPart(D) = L
形成一个共存分布式数组。共存分布式数组 D
的创建方式就像您组合了本地数组 L
的所有副本一样。分布方案由 codist
指定。全局错误检查确保本地部分符合指定的分布方案。有关构造 codistributor 对象的信息,请参阅 codistributor1d
和 codistributor2dbc
的参考页。
D = codistributed.build(L,codist,'noCommunication')
构建一个共存分布式数组,但不执行任何用于错误检查的工作单元间的通信。
codist
必须完整,您可以通过调用 codist.isComplete()
来检查。本地部分 L
的大小和结构要求取决于 codist
的类。对于一维和二维块循环协同分布器,L
在所有工作单元上必须具有相同的类和稀疏性。此外,本地部分 L 必须表示 globalIndices
方法在 codist
上描述的区域。
示例
创建一个大小为 1001×1001 的共存分布式数组,使得列 ii
包含值 ii
。
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