codistributor1d

Создайте 1D объект codistributor для codistributed массивов

Синтаксис

codist = codistributor1d()
codist = codistributor1d(dim)
codist = codistributor1d(dim,part)
codist = codistributor1d(dim,part,gsize)

Описание

1D codistributor распределяет массивы по одному, заданному измерению распределения нециклическим, разделенным способом.

codist = codistributor1d() формирует объект codistributor1d, использующий размерность по умолчанию и раздел. Размерность по умолчанию является последней неодноэлементной размерностью codistributed массива. Раздел по умолчанию распределяет массив по измерению по умолчанию максимально равномерно.

codist = codistributor1d(dim) формирует 1D объект codistributor для распределения в заданном измерении: 1 распределяет вдоль строк, 2 вдоль столбцов, и т.д.

codist = codistributor1d(dim,part) формирует 1D объект codistributor для распределения согласно вектору раздела part. Например, C1 = codistributor1d(1,[1,2,3,4]) описывает схему распределения массива десяти строк, чтобы быть codistributed его первой размерностью (строки), четырем рабочим, с 1 строкой к первому, 2 строками к второму, и т.д.

Получившийся codistributor любого вышеупомянутого синтаксиса является неполным, потому что его глобальный размер не задан. codistributor, созданный этим способом, может использоваться в качестве аргумента к другим функциям как шаблон codistributor при создании codistributed массивов.

codist = codistributor1d(dim,part,gsize) формирует объект codistributor с размерностью распределения dim, раздел распределения part, и глобальный размер его codistributed массивов gsize. Получившийся объект codistributor завершен и может использоваться, чтобы создать codistributed массив из его локальных частей с codistributed.build. Чтобы использовать размерность по умолчанию, задайте codistributor1d.unsetDimension для того аргумента; размерность распределения выведена из gsize и установлен в последнюю неодноэлементную размерность. Точно так же, чтобы использовать раздел по умолчанию, задайте codistributor1d.unsetPartition для того аргумента; раздел затем выведен из значения по умолчанию для того глобального размера и размерности распределения.

Локальная часть на рабочем labidx из codistributed массива с помощью такого codistributor имеет размер gsize во всех размерностях кроме dim, где размером является part(labidx). Локальная часть имеет тот же класс и приписывает как полный codistributed массив. Концептуально, полный глобальный массив мог быть восстановлен путем конкатенации различных локальных частей по измерению dim.

Примеры

Используйте объект codistributor1d создать N- N матрица из единиц, распределенных строками.

N = 1000;
spmd
    codistr = codistributor1d(1); % 1st dimension (rows)
    C = ones(N,codistr);
end

Используйте полностью заданный объект codistributor1d создать тривиальный N- N матрица codistributed от ее локальных частей. Затем визуализируйте, какие элементы хранятся на рабочем 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);

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

| |