Создайте 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
-by-N
матрица из единиц, распределенных строками.
N = 1000; spmd codistr = codistributor1d(1); % 1st dimension (rows) C = ones(N,codistr); end
Используйте полностью заданный объект codistributor1d создать тривиальный N
-by-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);