Create 2-D block-cyclic codistributor object for codistributed arrays
codist = codistributor2dbc()
codist = codistributor2dbc(lbgrid)
codist = codistributor2dbc(lbgrid,blksize)
codist = codistributor2dbc(lbgrid,blksize,orient)
codist = codistributor2dbc(lbgrid,blksize,orient,gsize)
The 2-D block-cyclic codistributor can be used only for two-dimensional arrays. It distributes arrays along two subscripts over a rectangular computational grid of labs (workers) in a block-cyclic manner. For a complete description of 2-D block-cyclic distribution, default parameters, and the relationship between block size and lab grid, see 2-Dimensional Distribution. The 2-D block-cyclic codistributor is used by the ScaLAPACK parallel matrix computation software library.
codist = codistributor2dbc()
forms a 2-D block-cyclic codistributor2dbc codistributor
object using default lab grid and block size.
codist = codistributor2dbc(lbgrid)
forms a 2-D block-cyclic
codistributor object using the specified lab grid and default block size.
lbgrid
must be a two-element vector defining the rows and
columns of the lab grid, and the rows times columns must equal the number of workers
for the codistributed array.
codist = codistributor2dbc(lbgrid,blksize)
forms a 2-D
block-cyclic codistributor object using the specified lab grid and block size.
codist = codistributor2dbc(lbgrid,blksize,orient)
allows an
orientation argument. Valid values for the orientation argument are
'row'
for row orientation, and 'col'
for
column orientation of the lab grid. The default is row orientation.
The resulting codistributor of any of the above syntax is incomplete because its global size is not specified. A codistributor constructed this way can be used as an argument to other functions as a template codistributor when creating codistributed arrays.
codist = codistributor2dbc(lbgrid,blksize,orient,gsize)
forms
a codistributor object that distributes arrays with the global size
gsize
. The resulting codistributor object is complete and can
therefore be used to build a codistributed array from its local parts with codistributed.build
. To use the
default values for lab grid, block size, and orientation, specify them using
codistributor2dbc.defaultLabGrid
,
codistributor2dbc.defaultBlockSize
, and
codistributor2dbc.defaultOrientation
, respectively.
Use a codistributor2dbc object to create an
N
-by-N
matrix of ones.
N = 1000; spmd codistr = codistributor2dbc(); D = ones(N,codistr); end
Use a fully specified codistributor2dbc object to create a trivial
N
-by-N
codistributed matrix from its local
parts. Then visualize which elements are stored on worker 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);
codistributed
| codistributor1d
| getLocalPart
| redistribute