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