codistributor2dbc

Создайте 2-D блок-циклический объект codistributor для кодовых распределенных массивов

Синтаксис

codist = codistributor2dbc()
codist = codistributor2dbc(lbgrid)
codist = codistributor2dbc(lbgrid,blksize)
codist = codistributor2dbc(lbgrid,blksize,orient)
codist = codistributor2dbc(lbgrid,blksize,orient,gsize)

Описание

Блок-циклический 2-D codistributor может использоваться только для двумерных массивов. Он распределяет массивы вдоль двух индексов по прямоугольной вычислительной сетке лабораторий (рабочих) блочно-циклическим способом. Полное описание блочно-циклического распределения 2-D параметров по умолчанию и связи между размером блока и лабораторной сеткой смотрите в 2-Dimensional Distribution. Блок-циклический 2-D codistributor используется библиотекой программного обеспечения параллельных матричных расчетов ScaLAPACK.

codist = codistributor2dbc() образует 2-D блок-циклическую codistributor2dbc объект codistributor с использованием лабораторной сетки и размера блоков по умолчанию.

codist = codistributor2dbc(lbgrid) формирует 2-D блок-циклический объект codistributor с использованием указанной лабораторной сетки и размера блока по умолчанию. lbgrid должен быть двухэлементным вектором, определяющим строки и столбцы лабораторной сетки, и строки, умноженные на столбцы, должны равняться количеству рабочих процессов для кодируемого массива.

codist = codistributor2dbc(lbgrid,blksize) формирует 2-D блок-циклический объект codistributor с использованием указанной лабораторной сетки и размера блока.

codist = codistributor2dbc(lbgrid,blksize,orient) позволяет использовать аргумент ориентации. Допустимые значения для аргумента ориентации 'row' для ориентации строки и 'col' для ориентации столбцов лабораторной сетки. По умолчанию это ориентация строки.

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

codist = codistributor2dbc(lbgrid,blksize,orient,gsize) формирует объект codistributor, который распределяет массивы с глобальным размером gsize. Получившийся объект codistributor завершен и, следовательно, может использоваться, чтобы создать кодовый распределенный массив из его локальных частей с codistributed.build. Чтобы использовать значения по умолчанию для лабораторной сетки, размера блоков и ориентации, задайте их с помощью codistributor2dbc.defaultLabGrid, codistributor2dbc.defaultBlockSize, и codistributor2dbc.defaultOrientation, соответственно.

Примеры

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

N = 1000;
spmd
    codistr = codistributor2dbc();  
    D = ones(N,codistr);
end    

Используйте полностью заданный объект codistributor2dbc, чтобы создать тривиальное N-by- N codistributed matrix из его локальных частей. Затем визуализируйте, какие элементы хранятся в рабочем кабинете 2.

N = 1000;
spmd
    codistr = codistributor2dbc(...
                 codistributor2dbc.defaultLabGrid, ...
                 codistributor2dbc.defaultBlockSize, ...
                 'row',[N,N]);
    myLocalSize = [length(codistr.globalIndices(1)), ...
                   length(codistr.globalIndices(2))]; 
    myLocalPart = labindex*ones(myLocalSize);
    D = codistributed.build(myLocalPart,codistr);
end
spy(D==2);