Выполните код параллельно для работников параллельного пула
spmd
statements
end
spmd,
задает statements
, endspmd
оператор в одной линии. MATLAB® выполняет spmd
тело, обозначаемое statements
на нескольких работники MATLAB одновременно. Каждый рабочий процесс может работать с другим набором данных или различными фрагментами распределенных данных и может общаться с другими участвующими работниками при выполнении параллельных расчетов. The spmd
оператор может использоваться только при наличии Parallel Computing Toolbox™. Чтобы выполнять операторы параллельно, необходимо сначала создать пул работников MATLAB с помощью parpool
или если ваши параллельные настройки позволяют автоматический запуск пула.
Внутри тела spmd
оператор, каждый работник MATLAB имеет уникальное значение labindex
, в то время как numlabs
обозначает общее количество рабочих процессов, выполняющих блок параллельно. В теле spmd
оператор, функции связи для связи с заданиями (такими как labSend
и labReceive
) может передавать данные между рабочими.
Значения, возвращаемые из тела spmd
оператор преобразован в Composite
объекты на клиенте MATLAB. Составной объект содержит ссылки на значения, хранящиеся в удаленных работниках MATLAB, и эти значения могут быть получены с помощью индексации массива ячеек. Фактические данные о работниках остаются доступными для работников для последующих spmd
выполнение, пока Composite существует на клиенте, а параллельный пул остается открытым.
По умолчанию MATLAB использует всех работников пула. Когда пул не активен, MATLAB создает пул и использует всех работников из этого пула. Если ваши настройки не позволяют автоматическое создание пула, MATLAB выполняет тело блока локально и создает составные объекты по мере необходимости. Вы не можете выполнить spmd
блокируйте, занят ли какой-либо рабочий процесс выполнением parfeval
запрос, если вы не используете spmd(0)
.
Для получения дополнительной информации о spmd
и Составные объекты, см. «Распределение массивов» и «Запуск SPMD».
Примечание
Использование parfevalOnAll
вместо parfor
или spmd
если вы хотите использовать clear
. Это сохраняет прозрачность рабочей области. См. раздел «Обеспечение прозрачности в циклах parfor или операторах spmd».
spmd(
использует n
), statements
, endn
чтобы указать точное количество работников MATLAB для оценки statements
, при условии, что n
работники доступны из параллельного пула. Если рабочих процессов недостаточно, выдается ошибка. Если n
равен нулю, MATLAB выполняет тело блока локально и создает объекты Composite, так же как если бы пул не был доступен.
spmd(
использует минимум m
,n
), statements, endm
и максимум n
работники для оценки statements
. Если рабочих процессов недостаточно, выдается ошибка. m
может быть нулем, что позволяет блоку запускаться локально, если нет доступных работников.
Система координат spmd
блок выполняется для рабочих процессов существующего параллельного пула. Если пул не существует, spmd
запустит новый параллельный пул, если автоматический запуск пулов не отключен в ваших параллельных настройках. Если нет параллельного пула и spmd
невозможно запустить, код запускается последовательно в сеансе клиента.
Если на AutoAttachFiles
свойство в профиле кластера для параллельного пула установлено в true
MATLAB выполняет анализ на spmd
блок, чтобы определить, какие файлы кода необходимы для его выполнения, затем автоматически присоединяет эти файлы к заданию параллельного пула, чтобы код был доступен работникам.
Для получения информации об ограничениях и ограничениях при использовании spmd
, см. «Запуск одиночных программ на нескольких наборах данных».
Для получения информации о эффективности spmd
и другие параллельные конструкции программирования, см. «Выбор между spmd, parfor и parfeval».