Создайте 2D циклический блоком объект codistributor для codistributed массивов
codist = codistributor2dbc()
codist = codistributor2dbc(lbgrid)
codist = codistributor2dbc(lbgrid,blksize)
codist = codistributor2dbc(lbgrid,blksize,orient)
codist = codistributor2dbc(lbgrid,blksize,orient,gsize)
2D циклический блоком codistributor может использоваться только для двумерных массивов. Это распределяет массивы вдоль двух индексов по прямоугольной вычислительной сетке лабораторий (рабочие) циклическим блоком способом. Для полного описания 2D циклического блоком распределения параметры по умолчанию и отношение между размером блока и сеткой лаборатории, видят 2-мерное Распределение. 2D циклический блоком codistributor используется параллелью ScaLAPACK матричная библиотека программного обеспечения расчета.
codist = codistributor2dbc()
формирует 2D циклический блоком объект codistributor2dbc codistributor, использующий сетку лаборатории по умолчанию и размер блока.
codist = codistributor2dbc(lbgrid)
формирует 2D циклический блоком объект codistributor использование заданной сетки лаборатории и размера блока по умолчанию. lbgrid
должен быть двухэлементный вектор, задающий строки и столбцы сетки лаборатории, и столбцы времен строк должны равняться количеству рабочих для codistributed массива.
codist = codistributor2dbc(lbgrid,blksize)
формирует 2D циклический блоком объект codistributor использование заданной сетки лаборатории и размера блока.
codist = codistributor2dbc(lbgrid,blksize,orient)
позволяет аргумент ориентации. Допустимыми значениями для аргумента ориентации является 'row'
для ориентации строки и 'col'
для ориентации столбца сетки лаборатории. Значением по умолчанию является ориентация строки.
Получившийся codistributor любого вышеупомянутого синтаксиса является неполным, потому что его глобальный размер не задан. codistributor создал этот путь, может использоваться в качестве аргумента к другим функциям как шаблон codistributor при создании codistributed массивов.
codist = codistributor2dbc(lbgrid,blksize,orient,gsize)
формирует объект codistributor, который распределяет массивы с глобальным размером gsize
. Получившийся объект codistributor завершен и может поэтому использоваться, чтобы создать codistributed массив из его локальных частей с codistributed.build
. Чтобы использовать значения по умолчанию для сетки лаборатории, размер блока и ориентация, задают их использующий codistributor2dbc.defaultLabGrid
, codistributor2dbc.defaultBlockSize
, и codistributor2dbc.defaultOrientation
, соответственно.
Используйте объект codistributor2dbc создать N
- N
матрица из единиц.
N = 1000; spmd codistr = codistributor2dbc(); D = ones(N,codistr); end
Используйте полностью заданный объект codistributor2dbc создать тривиальный N
- N
матрица codistributed от ее локальных частей. Затем визуализируйте, какие элементы хранятся на рабочем 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