Create 1-D codistributor object for codistributed arrays
codist = codistributor1d()
codist = codistributor1d(dim)
codist = codistributor1d(dim,part)
codist = codistributor1d(dim,part,gsize)
The 1-D codistributor distributes arrays along a single, specified distribution dimension, in a noncyclic, partitioned manner.
codist = codistributor1d()
forms a codistributor1d object using
default dimension and partition. The default dimension is the last
nonsingleton dimension of the codistributed array. The default partition
distributes the array along the default dimension as evenly as possible.
codist = codistributor1d(dim)
forms a 1-D
codistributor object for distribution along the specified dimension: 1
distributes
along rows, 2
along columns, etc.
codist = codistributor1d(dim,part)
forms
a 1-D codistributor object for distribution according to the partition
vector part
. For example C1 = codistributor1d(1,[1,2,3,4])
describes
the distribution scheme for an array of ten rows to be codistributed
by its first dimension (rows), to four workers, with 1 row to the
first, 2 rows to the second, etc.
The resulting codistributor of any of the above syntax is incomplete because its global size is not specified. A codistributor constructed in this manner can be used as an argument to other functions as a template codistributor when creating codistributed arrays.
codist = codistributor1d(dim,part,gsize)
forms
a codistributor object with distribution dimension dim
,
distribution partition part
, and global size of
its codistributed arrays gsize
. The resulting
codistributor object is complete and can be used to build a codistributed
array from its local parts with codistributed.build
.
To use a default dimension, specify codistributor1d.unsetDimension
for
that argument; the distribution dimension is derived from gsize
and
is set to the last non-singleton dimension. Similarly, to use a default
partition, specify codistributor1d.unsetPartition
for
that argument; the partition is then derived from the default for
that global size and distribution dimension.
The local part on worker labidx
of a codistributed
array using such a codistributor is of size gsize
in
all dimensions except dim
, where the size is part(labidx)
.
The local part has the same class and attributes as the overall codistributed
array. Conceptually, the overall global array could be reconstructed
by concatenating the various local parts along dimension dim
.
Use a codistributor1d object to create an N
-by-N
matrix
of ones, distributed by rows.
N = 1000; spmd codistr = codistributor1d(1); % 1st dimension (rows) C = ones(N,codistr); end
Use a fully specified codistributor1d 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 = codistributor1d( ... codistributor1d.unsetDimension, ... codistributor1d.unsetPartition, ... [N,N]); myLocalSize = [N,N]; % start with full size on each lab % then set myLocalSize to default part of whole array: myLocalSize(codistr.Dimension) = codistr.Partition(labindex); myLocalPart = labindex*ones(myLocalSize); % arbitrary values D = codistributed.build(myLocalPart,codistr); end spy(D==2);