exponenta event banner

Соединение

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

Синтаксис

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

См. также

| |