Создайте объект 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