exponenta event banner

codistributed.build

Создание распределенного массива из распределенных данных

Синтаксис

D = codistributed.build(L,codist)
D = codistributed.build(L,codist,'noCommunication')

Описание

D = codistributed.build(L,codist) формирует совместно распределенный массив с getLocalPart(D) = L. Распределенный массив D создается, как если бы вы объединили все копии локального массива L. Схема распределения определяется codist. Глобальная проверка ошибок обеспечивает соответствие локальных деталей указанной схеме распределения. Сведения о построении объектов coddistributor см. на страницах ссылок для codistributor1d и codistributor2dbc.

D = codistributed.build(L,codist,'noCommunication') создает распределенный по коду массив, не выполняя обмен данными между сотрудниками для проверки ошибок.

codist должна быть полной, которую вы можете проверить, позвонив codist.isComplete(). Требования к размеру и структуре локальной детали L зависят от класса codist. Для 1-D и 2-D блочно-циклических распространителей кода L должны иметь одинаковый класс и разреженность на всех рабочих. Кроме того, локальная часть L должна представлять область, описанную globalIndices метод на codist.

Примеры

Создайте распределенный по коду массив размера 1001-by-1001 таким образом, чтобы столбец ii содержит значение ii.

spmd
    N = 1001;
    globalSize = [N,N];
    % Distribute the matrix over the second dimension (columns),
    % and let the codistributor derive the partition from the 
    % global size.
    codistr = codistributor1d(2, ...
                 codistributor1d.unsetPartition,globalSize)
 
    % On 4 workers, codistr.Partition equals [251,250,250,250].
    % Allocate storage for the local part.
    localSize = [N, codistr.Partition(labindex)];
    L = zeros(localSize);
    
    % Use globalIndices to map the indices of the columns 
    % of the local part into the global column indices.
    globalInd = codistr.globalIndices(2); 
    % On 4 workers, globalInd has the values:
    % 1:251    on worker 1
    % 252:501  on worker 2
    % 502:751  on worker 3
    % 752:1001 on worker 4
    
    % Initialize the columns of the local part to 
    % the correct value.
    for localCol = 1:length(globalInd)
        globalCol = globalInd(localCol);
        L(:,localCol) = globalCol;
    end
    D = codistributed.build(L,codistr)
end
Представлен в R2009b