globalIndices
Global indices for local part of codistributed array
Syntax
K = globalIndices(C,dim)
K
= globalIndices(C,dim,lab)
[E,F] = globalIndices(C,dim)
[E,F]
= globalIndices(C,dim,lab)
K = globalIndices(codist,dim,lab)
[E,F] = globalIndices(codist,dim,lab)
Description
globalIndices
tells you the relationship between indices on a
local part and the corresponding index range in a given dimension on the
codistributed array. The globalIndices
method on a codistributor
object allows you to get this relationship without actually creating the
array.
K = globalIndices(C,dim)
or
K
= globalIndices(C,dim,lab)
returns a vector
K
so that getLocalPart(C) = C(...,K,...)
in the specified dimension dim
of codistributed array
C
on the specified worker. If the lab
argument is omitted, the default is spmdIndex
.
[E,F] = globalIndices(C,dim)
or
[E,F]
= globalIndices(C,dim,lab)
returns two integers
E
and F
so that getLocalPart(C) =
C(...,E:F,...)
of codistributed array C
in the
specified dimension dim
on the specified worker. If the
lab
argument is omitted, the default is
spmdIndex
.
K = globalIndices(codist,dim,lab)
is the same as K =
globalIndices(C,dim,lab)
, where codist
is the
codistributor to be used for C
, or codist =
getCodistributor(C)
. This allows you to get the global indices for a
codistributed array without having to create the array itself.
[E,F] = globalIndices(codist,dim,lab)
is the same as
[E,F] = globalIndices(C,dim,lab)
, where
codist
is the codistributor to be used for
C
, or codist = getCodistributor(C)
. This
allows you to get the global indices for a codistributed array without having to
create the array itself.
Examples
Create a 2-by-22 codistributed array among four workers, and view the global indices on each lab:
spmd C = zeros(2,22,codistributor1d(2,[6 6 5 5])); if spmdIndex == 1 K = globalIndices(C,2) % returns K = 1:6. elseif spmdIndex == 2 [E,F] = globalIndices(C,2) % returns E = 7, F = 12. end K = globalIndices(C,2,3) % returns K = 13:17. [E,F] = globalIndices(C,2,4) % returns E = 18, F = 22. end
Use globalIndices
to load data from a file and construct a
codistributed array distributed along its columns, i.e., dimension 2. Notice how
globalIndices
makes the code not specific to the number of
workers and alleviates you from calculating offsets or partitions.
spmd siz = [1000,1000]; codistr = codistributor1d(2,[],siz); % Use globalIndices to figure out which columns % each worker should load. [firstCol,lastCol] = globalIndices(codistr,2); % Call user-defined function readRectangleFromFile to % load all the values that should go into % the local part for this worker. labLocalPart = readRectangleFromFile(fileName, ... 1,siz(1),firstCol,lastCol); % With the local part and codistributor, % construct the corresponding codistributed array. C = codistributed.build(labLocalPart,codistr); end
Version History
Introduced in R2008a