Составной объект

Создайте Составной объект

Синтаксис

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

Смотрите также

| |