codistributor

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

Синтаксис

codist = codistributor()
codist = codistributor('1d')
codist = codistributor('1d',dim)
codist = codistributor('1d',dim,part)
codist = codistributor('2dbc')
codist = codistributor('2dbc',lbgrid)
codist = codistributor('2dbc',lbgrid,blksize)

Описание

Существует две схемы распределительных массивов. Схема, обозначенная вектором символов '1d', распределяет массив вдоль одного указанного индекса, размерности распределения, нециклическим, разделенным способом. Схема, обозначенная '2dbc', используемым параллельным матричным программным обеспечением ScaLAPACK вычисления, применяется только к двумерным массивам и отличается оба индекса по прямоугольной вычислительной сетке лабораторий (рабочие) блокированным, циклическим способом.

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

Z = zeros(..., codistributor())
R = randn(..., codistributor())

codist = codistributor('1d') совпадает с codist = codistributor().

codist = codistributor('1d',dim) также формирует объект codistributor с codist.Dimension = dim и разделом по умолчанию.

codist = codistributor('1d',dim,part) также формирует объект codistributor с codist.Dimension = dim и codist.Partition = part.

codist = codistributor('2dbc') формирует 2D циклический блоком объект codistributor. Для получения дополнительной информации о распределении '2dbc', смотрите 2-мерное Распределение.

codist = codistributor('2dbc',lbgrid) формирует 2D циклический блоком объект codistributor с сеткой лаборатории, заданной lbgrid и с размером блока по умолчанию.

codist = codistributor('2dbc',lbgrid,blksize) формирует 2D циклический блоком объект codistributor с сеткой лаборатории, заданной lbgrid и с размером блока, заданным blksize.

codist = getCodistributor(D) возвращает codistributor объект codistributed массива D.

Примеры

На четырех рабочих создайте 3-мерное, 2 6 4 массивами с распределением вдоль второго измерения и схемой выделения разделов [1 2 1 2]. Другими словами, рабочий 1 содержит 2 сегментом 1 на 4, рабочий 2 2 2 4 сегментами, и т.д.

spmd
    dim = 2; % distribution dimension
    codist = codistributor('1d',dim,[1 2 1 2],[2 6 4]);
    if mod(labindex,2)
        L = rand(2,1,4);
    else
        L = rand(2,2,4);
    end
    A = codistributed.build(L,codist)
end
A

На четырех рабочих создайте 20 5 codistributed массив A, распределенный строками (по его первой размерности) с универсальной схемой выделения разделов.

spmd
    dim = 1; % distribution dimension
    partn = codistributor1d.defaultPartition(20);
    codist = codistributor('1d',dim,partn,[20 5]);
    L = magic(5) + labindex;
    A = codistributed.build(L,codist)
end
A

Представленный в R2008b