globalIndices

Глобальные индексы для локальной части codistributed массива

Синтаксис

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 говорит вам отношение между индексами на локальной части и соответствующей индексной области значений в данной размерности на codistributed массиве. Метод globalIndices на объекте codistributor позволяет вам получать это отношение, на самом деле не создавая массив.

K = globalIndices(C,dim) или K = globalIndices(C,dim,lab) возвращает векторный K так, чтобы getLocalPart(C) = C(...,K,...) в заданном измерении dim codistributed массива C на заданном рабочем. Если аргумент lab не использован, значением по умолчанию является labindex.

[E,F] = globalIndices(C,dim) или [E,F] = globalIndices(C,dim,lab) возвращает два целых числа E и F так, чтобы getLocalPart(C) = C(...,E:F,...) codistributed массива C в заданном измерении dim на заданном рабочем. Если аргумент lab не использован, значением по умолчанию является labindex.

K = globalIndices(codist,dim,lab) совпадает с K = globalIndices(C,dim,lab), где codist является codistributor, который будет использоваться для C или codist = getCodistributor(C). Это позволяет вам получать глобальные индексы для codistributed массива, не имея необходимость создавать сам массив.

[E,F] = globalIndices(codist,dim,lab) совпадает с [E,F] = globalIndices(C,dim,lab), где codist является codistributor, который будет использоваться для C или codist = getCodistributor(C). Это позволяет вам получать глобальные индексы для codistributed массива, не имея необходимость создавать сам массив.

Примеры

Создайте 2 22 codistributed массив среди четырех рабочих и просмотрите глобальные индексы на каждой лаборатории:

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, чтобы загрузить данные из файла и создать codistributed массив, распределенный вдоль его столбцов, т.е. размерности 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       

Смотрите также

|

Введенный в R2008a