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