Выполните код параллельно для работников параллельного пула
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 свойство в профиле кластера для параллельного пула установлено в trueMATLAB выполняет анализ на spmd блок, чтобы определить, какие файлы кода необходимы для его выполнения, затем автоматически присоединяет эти файлы к заданию параллельного пула, чтобы код был доступен работникам.
Для получения информации об ограничениях и ограничениях при использовании spmd, см. «Запуск одиночных программ на нескольких наборах данных».
Для получения информации о эффективности spmd и другие параллельные конструкции программирования, см. «Выбор между spmd, parfor и parfeval».