Создайте объект 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
codistributed | codistributor1d | codistributor2dbc | getCodistributor | getLocalPart | redistribute