Глобальные индексы для локальной части кодируемого массива
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)
globalIndices
сообщает вам отношение между индексами в локальной части и соответствующей областью значений индексов в заданной размерности в кодовом распределении массива. The globalIndices
метод на объекте codistributor позволяет вам получить эту связь, не создавая массив на самом деле.
K = globalIndices(C,dim)
или K
= globalIndices(C,dim,lab)
возвращает вектор K
так что getLocalPart(C) = C(...,K,...)
в заданном измерении dim
дискретизированных массивов C
на указанном рабочем. Если на lab
аргумент опущен, значение по умолчанию labindex
.
[E,F] = globalIndices(C,dim)
или [E,F]
= globalIndices(C,dim,lab)
возвращает два целых чисел E
и F
так что getLocalPart(C) = C(...,E:F,...)
дискретизированных массивов C
в заданном измерении dim
на указанном рабочем. Если на lab
аргумент опущен, значение по умолчанию labindex
.
K = globalIndices(codist,dim,lab)
то же, что и K = globalIndices(C,dim,lab)
, где codist
- кодовый распространитель, для которого будут использоваться C
, или codist = getCodistributor(C)
. Это позволяет вам получить глобальные индексы для кодируемого массива, не создавая сам массив.
[E,F] = globalIndices(codist,dim,lab)
то же, что и [E,F] = globalIndices(C,dim,lab)
, где codist
- кодовый распространитель, для которого будут использоваться C
, или codist = getCodistributor(C)
. Это позволяет вам получить глобальные индексы для кодируемого массива, не создавая сам массив.
Создайте массив с кодовым распределением 2 на 22 среди четырех работников и просмотрите глобальные индексы в каждой лаборатории:
spmd C = zeros(2,22,codistributor1d(2,[6 6 5 5])); if labindex == 1 K = globalIndices(C,2) % returns K = 1:6. elseif labindex == 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
Использование globalIndices
загрузить данные из файла и создать распределенный по его столбцам кодовый массив, т.е. размерность 2. Заметьте, как globalIndices
делает код не специфичным для количества работников и облегчает вам вычисление смещений или разделов.
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