Создание составного объекта
C = Composite()
C = Composite(nlabs)
C = Composite() создает составной объект на клиенте с использованием работников из параллельного пула. Фактическое число работников, на которых ссылается этот составной объект, зависит от размера пула и всех существующих составных объектов. Как правило, следует создавать составные объекты вне любого spmd заявление.
C = Composite(nlabs) создает составной объект в наборе параллельных пулов, соответствующий указанному ограничению. nlabs должен быть вектором длиной 1 или 2, содержащим целые числа или Inf. Если nlabs имеет длину 1, она указывает точное число работников для использования. Если nlabs имеет размер 2, указывает минимальное и максимальное количество работников для использования. Фактическое количество используемых элементов - это максимальное число элементов, совместимое с размером параллельного пула и другими существующими составными объектами. Если ограничения на число работников не могут быть выполнены, возникает ошибка.
Составной объект имеет по одной записи для каждой лаборатории; изначально каждая запись не содержит данных. Использовать индексирование или spmd блок для определения значений для записей.
В следующих примерах используется локальный параллельный пул из четырех работников, открытый с помощью оператора:
p = parpool('local',4);В этом примере показано, как создать составной объект без определенных элементов, а затем назначить значения с помощью for-закольцовывание в клиенте.
c = Composite(); % One element per worker in the pool for w = 1:length(c) c{w} = 0; % Value stored on each worker end
В этом примере показано, как назначить составные элементы в spmd блок.
c = Composite(); spmd c = 0; % Value stored on each worker end
В этом примере показано, как назначить элементы составного элемента со значением от каждого работника.
c = Composite(); spmd c = labindex; end c{:}
1
2
3
4В этом примере показано, как использовать вектор распределенного массива для задания значений составного массива.
d = distributed([3 1 4 2]); % One integer per worker spmd c = getLocalPart(d); % Unique value on each worker end c{:}
3
1
4
2Составной элемент создается на рабочих участках существующего параллельного пула. Если пул не существует, Composite запускает новый параллельный пул, если автоматический запуск пулов не отключен в настройках параллельного пула. При отсутствии параллельного пула и Composite невозможно запустить, результатом является составной элемент 1 на 1 в клиентской рабочей области.