Создайте объект 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()
без аргументов возвращает объект codistributor по умолчанию с параметрами с нулевым или пустым значением, который затем может использоваться в качестве аргумента к другим функциям, чтобы указать, что функция должна создать распределенный по умолчанию массив по возможности с распределением по умолчанию. Для примера,
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 блок-циклический объект codistributor. Для получения дополнительной информации о '2dbc'
распределение, см. 2-Dimensional распределение
codist = codistributor('2dbc',lbgrid)
формирует 2-D блок-циклический объект codistributor с лабораторной сеткой, заданной как lbgrid
и с размером блока по умолчанию.
codist = codistributor('2dbc',lbgrid,blksize)
формирует 2-D блок-циклический объект 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
codistributed
| codistributor1d
| codistributor2dbc
| getCodistributor
| getLocalPart
| redistribute