Создание объекта codistributor 1-D для распределенных по кодам массивов
codist = codistributor1d()
codist = codistributor1d(dim)
codist = codistributor1d(dim,part)
codist = codistributor1d(dim,part,gsize)
1-D codistributor распределяет массивы вдоль одного заданного измерения распределения нециклическим, секционированным способом.
codist = codistributor1d() формирует codistributor1d с использованием измерения по умолчанию и секции. Измерение по умолчанию является последним несинглтоновым измерением распределенного по коду массива. Раздел по умолчанию распределяет массив вдоль размера по умолчанию максимально равномерно.
codist = codistributor1d(dim) формирует объект 1-D coddistributor для распределения по указанному измерению: 1 распределяет по строкам, 2 вдоль колонн и т.д.
codist = codistributor1d(dim,part) формирует объект 1-D codistributor для распределения в соответствии с вектором разбиения part. Например, C1 = codistributor1d(1,[1,2,3,4]) описывает схему распределения для массива из десяти строк, подлежащих кодовому распределению по его первому измерению (строкам), к четырем работникам, с 1 строкой к первому, 2 строками ко второму и т.д.
Результирующий распространитель любого из приведенных выше синтаксисов является неполным, так как его глобальный размер не указан. Codistributor, построенный таким образом, может использоваться в качестве аргумента для других функций в качестве шаблона codistributor при создании codistributed-массивов.
codist = codistributor1d(dim,part,gsize) формирует объект codistributor с измерением распределения dim, раздел распределения partи глобальный размер его совместно распределенных массивов gsize. Результирующий объект codistributor является полным и может использоваться для построения распределенного по коду массива из его локальных частей с помощью codistributed.build. Чтобы использовать размер по умолчанию, укажите codistributor1d.unsetDimension для этого аргумента; измерение распределения является производным от gsize и устанавливается в последний не-одиночный размер. Аналогично, чтобы использовать раздел по умолчанию, укажите codistributor1d.unsetPartition для этого аргумента; затем раздел определяется на основе значения по умолчанию для этого глобального измерения размера и распределения.
Локальная деталь на работнике labidx coddistributed-массива, использующего такой coddistributor, имеет размер gsize во всех измерениях, кроме dim, где размер part(labidx). Локальная часть имеет те же класс и атрибуты, что и общий распределенный массив. Концептуально, общий глобальный массив может быть восстановлен путем объединения различных локальных частей вдоль размерности dim.
Используйте объект coddistributor1d для создания Nоколо-N матрица единиц, распределенная по строкам.
N = 1000; spmd codistr = codistributor1d(1); % 1st dimension (rows) C = ones(N,codistr); end
Использовать полностью указанный объект coddistributor1d для создания тривиала Nоколо-N codtulated matrix из своих локальных частей. Затем визуализируйте, какие элементы хранятся на работнике 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);