Создайте Составной объект
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 в клиентской рабочей области.