exponenta event banner

Использование параллельных вычислений для оптимизации отклика

Настройка системы для параллельных вычислений

Вы можете ускорить оптимизацию модели с помощью параллельных вычислений на многоядерных процессорах или многопроцессорных сетях. Использование параллельных вычислений с оптимизатором отклика и sdo.optimize для оптимизации с использованием fmincon, lsqnonlin, и patternsearch методы. Параллельные вычисления не поддерживаются для fminsearch Метод (Simplex search).

При оптимизации параметров модели с помощью параллельных вычислений программа использует доступный параллельный пул. Если они недоступны и в настройках Toolbox™ параллельных вычислений выбран параметр Автоматически создавать параллельный пул, программа запускает параллельный пул, используя настройки, указанные в этих настройках. Чтобы открыть параллельный пул, использующий определенный профиль кластера, используйте:

parpool(MyProfile);

MyProfile - имя профиля кластера.

Сведения о создании профиля кластера см. в разделе Добавление и изменение профилей кластера (панель инструментов параллельных вычислений).

Зависимости модели

Зависимости модели - это любые ссылочные модели, такие как переменные модели, S-функции и дополнительные файлы, необходимые для запуска модели. Перед началом оптимизации убедитесь, что зависимости модели завершены. В противном случае могут получиться неожиданные результаты.

Обеспечение доступности зависимостей модели для удаленных работников

При использовании параллельных вычислений программное обеспечение Simulink ® Design Optimization™ помогает определить зависимости модели. Для этого используется анализатор зависимостей. Анализ зависимостей может не найти все файлы, требуемые для модели. Дополнительные сведения см. в разделе Область и ограничения анализатора зависимостей. Если модель имеет зависимости, которые не обнаружены или недоступны работниками параллельного пула, добавьте их в список зависимостей модели.

Зависимости становятся доступными для работников параллельного пула путем указания одного из следующих параметров:

  • Зависимости файлов: файлы зависимостей модели копируются в параллельные работники пула.

  • Зависимости от пути: пути к зависимостям модели добавляются к путям работников параллельного пула. Если вы работаете в мультиплатформенном сценарии, убедитесь, что пути совместимы между платформами.

Использование файловых зависимостей рекомендуется, однако в некоторых случаях лучше выбрать пути зависимостей. Например, если параллельные вычисления установлены на локальном многоядерном компьютере, использование зависимостей путей является предпочтительным, так как использование зависимостей файлов создает множество копий зависимых файлов на локальном компьютере.

Дополнительные сведения см. в разделе:

Оптимизация проектирования с помощью параллельных вычислений (GUI)

Чтобы оптимизировать отклик модели с помощью параллельных вычислений в оптимизаторе отклика:

  1. Убедитесь, что программное обеспечение имеет доступ к параллельным работникам пула, которые используют соответствующий профиль кластера.

    Дополнительные сведения см. в разделе Настройка системы для параллельных вычислений.

  2. Откройте оптимизатор отклика для модели Simulink.

  3. Настройте конструктивные переменные, требования к конструкции и, при необходимости, параметры оптимизации.

    Дополнительные сведения см. в разделах Указание конструктивных переменных, Указание требований к конструкции временной области в приложении, Указание требований к конструкции частотной области в приложении и Определение параметров оптимизации.

  4. На вкладке Оптимизация ответа (Response Optimization) щелкните Опции (Options), чтобы открыть диалоговое окно Опции оптимизации ответа (Response Optimization Options).

  5. Перейдите на вкладку «Параметры параллелизма».

  6. Установите флажок Использовать параллельный пул во время оптимизации.

    Эта опция используется для проверки зависимостей в модели Simulink. Зависимости файлов отображаются в списке Зависимости файлов модели (Model file dependencies) и в соответствующем пути к файлам в окне Зависимости путей модели (Model path dependencies). Файлы, перечисленные в зависимостях файлов модели, копируются на удаленных работников.

    Примечание

    Автоматическая проверка зависимостей может обнаружить не все зависимости в модели.

    Дополнительные сведения см. в разделе Зависимости модели. В этом случае следует вручную добавить необнаруженные зависимости.

  7. Добавьте все зависимости файлов, которые автоматическая проверка не обнаруживает.

    Укажите файлы в списке Зависимости файлов модели (Model file dependencies), разделенные точкой с запятой или отдельными строками.

    Либо щелкните Добавить зависимость файла (Add file dependency), чтобы открыть диалоговое окно, и выберите файл для добавления.

    Примечание

    Если копировать файлы удаленным работникам не требуется, удалите все записи в списке Зависимости файлов модели (Model file dependencies). Заполните список Зависимости пути модели (Model path dependencies), щелкнув Синхронизировать зависимости пути из модели (Sync path dependencies from model), и добавьте все необнаруженные зависимости пути. Кроме того, в поле списка обновите пути на локальных дисках, чтобы сделать их доступными для удаленных работников. Например, изменить C:\ кому \\\\hostname\\C$\\.

  8. При изменении модели Simulink повторно синхронизируйте зависимости, чтобы убедиться в обнаружении новых зависимостей. Щелкните Синхронизировать зависимости файлов от модели (Sync file dependencies from model) на вкладке Параллельные опции (Parallel Options), чтобы повторно запустить автоматическую проверку зависимостей для модели.

    Это действие обновляет список Зависимости файла модели (Model file dependencies) с любой новой зависимостью файла, найденной в модели.

  9. Нажмите кнопку ОК.

  10. В оптимизаторе отклика щелкните Оптимизировать (Optimize), чтобы оптимизировать отклик модели с помощью параллельных вычислений.

Сведения об устранении неполадок, связанных с оптимизацией с помощью параллельных вычислений, см. в разделе Устранение неполадок.

Оптимизация проектирования с помощью параллельных вычислений (код)

Для оптимизации отклика модели с помощью параллельных вычислений в командной строке:

  1. Убедитесь, что программное обеспечение имеет доступ к параллельным работникам пула, которые используют соответствующий профиль кластера.

    Дополнительные сведения см. в разделе Настройка системы для параллельных вычислений.

  2. Откройте модель.

  3. Укажите требования к конструкции и конструктивные переменные. Например, см. раздел Оптимизация конструкции для удовлетворения требований к ответу на шаг (код).

  4. Разрешить параллельные вычисления с помощью набора опций оптимизации, opt.

    opt = sdo.OptimizeOptions;
    opt.UseParallel = true;
  5. Найдите зависимости модели.

    [dirs,files] = sdo.getModelDependencies(modelname)

    Примечание

    sdo.getModelDependencies может не обнаружить все зависимости в модели. Дополнительные сведения см. в разделе Зависимости модели. В этом случае следует вручную добавить необнаруженные зависимости.

  6. Изменить files для включения любых зависимостей файлов, которые sdo.getModelDependencies не обнаруживает.

    files = vertcat(files,'C:\matlab\work\filename.m')

    Примечание

    Если вы не хотите копировать файлы на удаленных работников, используйте пути зависимостей. Добавление всех необнаруженных зависимостей пути к dirs и обновите пути на локальных дисках, чтобы сделать их доступными для удаленных работников. Посмотрите sdo.getModelDependencies для получения дополнительной информации.

  7. Добавьте зависимости файлов для оптимизации.

    opt.ParallelFileDependencies = files; 
  8. Выполните оптимизацию.

    [pOpt,opt_info] = sdo.optimize(opt_fcn,param,opt);

Сведения об устранении неполадок, связанных с оптимизацией с помощью параллельных вычислений, см. в разделе Устранение неполадок.

Поиск неисправностей

Почему результаты оптимизации с параллельными вычислениями и без них отличаются?

  • Различная численная точность на клиентских и рабочих машинах может привести к незначительным различиям в результатах моделирования. Таким образом, способ оптимизации может принимать другой путь решения и давать другой результат.

  • При использовании параллельных вычислений с Pattern search , поиск является более полным и может привести к другому решению.

    Дополнительные сведения см. в разделе Параллельные вычисления с помощью метода поиска шаблонов.

Почему я не вижу ожидаемой скорости оптимизации с помощью параллельных вычислений?

  • При оптимизации модели, которая не имеет большого количества параметров или не требует много времени для моделирования, во время оптимизации может не появиться ускорения. В таких случаях накладные расходы, связанные с созданием и распределением параллельных задач, перевешивают преимущества параллельного выполнения оптимизации.

  • Использование Pattern search способ с параллельными вычислениями может не ускорить время оптимизации. Без параллельных вычислений метод останавливает поиск в каждой итерации, когда находит решение лучше, чем текущее решение. Поиск решения-кандидата является более комплексным при использовании параллельных вычислений. Хотя число итераций может быть больше, оптимизация без использования параллельных вычислений может быть более быстрой.

    Дополнительные сведения об ожидаемом ускорении см. в разделе Параллельные вычисления с помощью метода поиска шаблонов.

Почему оптимизация с использованием параллельных вычислений не позволяет добиться какого-либо прогресса?

Для устранения неполадки:

  1. Выполните оптимизацию для нескольких итераций без параллельных вычислений, чтобы увидеть, идет ли оптимизация.

  2. Проверьте, имеют ли удаленные работники доступ ко всем зависимостям модели. Зависимости модели включают переменные данных и файлы, необходимые для выполнения модели.

    Дополнительные сведения см. в разделе Зависимости модели.

Почему оптимизация с использованием параллельных вычислений не прекращается при нажатии кнопки «Остановить оптимизацию»?

При использовании параллельных вычислений с Pattern search , программа должна дождаться завершения текущей итерации оптимизации, прежде чем уведомит работников об остановке. Оптимизация не завершается сразу же после нажатия кнопки Остановить (Stop), и вместо этого она продолжает выполняться.

См. также

| | | (Панель инструментов параллельных вычислений)

Связанные примеры

Подробнее