Создайте 2-D блок-циклический объект codistributor для кодовых распределенных массивов
codist = codistributor2dbc()
codist = codistributor2dbc(lbgrid)
codist = codistributor2dbc(lbgrid,blksize)
codist = codistributor2dbc(lbgrid,blksize,orient)
codist = codistributor2dbc(lbgrid,blksize,orient,gsize)
Блок-циклический 2-D codistributor может использоваться только для двумерных массивов. Он распределяет массивы вдоль двух индексов по прямоугольной вычислительной сетке лабораторий (рабочих) блочно-циклическим способом. Полное описание блочно-циклического распределения 2-D параметров по умолчанию и связи между размером блока и лабораторной сеткой смотрите в 2-Dimensional Distribution. Блок-циклический 2-D codistributor используется библиотекой программного обеспечения параллельных матричных расчетов ScaLAPACK.
codist = codistributor2dbc()
образует 2-D блок-циклическую codistributor2dbc
объект codistributor с использованием лабораторной сетки и размера блоков по умолчанию.
codist = codistributor2dbc(lbgrid)
формирует 2-D блок-циклический объект codistributor с использованием указанной лабораторной сетки и размера блока по умолчанию. lbgrid
должен быть двухэлементным вектором, определяющим строки и столбцы лабораторной сетки, и строки, умноженные на столбцы, должны равняться количеству рабочих процессов для кодируемого массива.
codist = codistributor2dbc(lbgrid,blksize)
формирует 2-D блок-циклический объект codistributor с использованием указанной лабораторной сетки и размера блока.
codist = codistributor2dbc(lbgrid,blksize,orient)
позволяет использовать аргумент ориентации. Допустимые значения для аргумента ориентации 'row'
для ориентации строки и 'col'
для ориентации столбцов лабораторной сетки. По умолчанию это ориентация строки.
Получившийся codistributor любого из вышеописанных синтаксисов неполен, поскольку его глобальный размер не задан. Codistributor, сконструированный таким образом, может использоваться в качестве аргумента к другим функциям в качестве шаблона codistributor при создании кодированных распределенных массивов.
codist = codistributor2dbc(lbgrid,blksize,orient,gsize)
формирует объект codistributor, который распределяет массивы с глобальным размером gsize
. Получившийся объект codistributor завершен и, следовательно, может использоваться, чтобы создать кодовый распределенный массив из его локальных частей с codistributed.build
. Чтобы использовать значения по умолчанию для лабораторной сетки, размера блоков и ориентации, задайте их с помощью codistributor2dbc.defaultLabGrid
, codistributor2dbc.defaultBlockSize
, и codistributor2dbc.defaultOrientation
, соответственно.
Используйте объект codistributor2dbc для создания N
-by- N
матрица таковых.
N = 1000; spmd codistr = codistributor2dbc(); D = ones(N,codistr); end
Используйте полностью заданный объект codistributor2dbc, чтобы создать тривиальное N
-by- N
codistributed matrix из его локальных частей. Затем визуализируйте, какие элементы хранятся в рабочем кабинете 2.
N = 1000; spmd codistr = codistributor2dbc(... codistributor2dbc.defaultLabGrid, ... codistributor2dbc.defaultBlockSize, ... 'row',[N,N]); myLocalSize = [length(codistr.globalIndices(1)), ... length(codistr.globalIndices(2))]; myLocalPart = labindex*ones(myLocalSize); D = codistributed.build(myLocalPart,codistr); end spy(D==2);
codistributed
| codistributor1d
| getLocalPart
| redistribute