exponenta event banner

codistributor

Создание объекта codistributor для распределенных по кодам массивов

Синтаксис

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(), без аргументов, возвращает объект coddistributor по умолчанию с нулевыми или пустыми параметрами, который затем может использоваться в качестве аргумента для других функций, указывая, что функция должна создать распределенный по умолчанию массив, если это возможно, с распределением по умолчанию. Например,

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') формирует объект 2-D block-cyclic codistributor. Для получения дополнительной информации о '2dbc' распределение, см. раздел Распределение 2-Dimensional.

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

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

codist = getCodistributor(D) возвращает объект codistributor распределенного массива 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 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