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

Сконфигурируйте свою систему для параллельных вычислений

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

Когда вы оптимизируете параметры модели с помощью параллельных вычислений, программное обеспечение использует доступный параллельный пул. Если ни один не доступен, и вы выбираете Automatically create a parallel pool в своих настройках Parallel Computing Toolbox™, программное обеспечение запускает параллельный пул с помощью настроек в тех настройках. Чтобы открыть параллельный пул, который использует определенный кластерный профиль, используйте:

parpool(MyProfile);

MyProfile является именем кластерного профиля.

Для получения информации относительно создания кластерного профиля, смотрите, Добавляют и Изменяют Кластерные Профили (Parallel Computing Toolbox).

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

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

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

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

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

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

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

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

Для получения дополнительной информации см.:

Оптимизируйте проект Используя параллельные вычисления (графический интерфейс пользователя)

Оптимизировать образцовый ответ с помощью параллельных вычислений в инструменте Response Optimization:

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

    Для получения дополнительной информации смотрите, Конфигурируют Вашу Систему для Параллельных вычислений.

  2. Откройте инструмент Response Optimization для модели Simulink.

  3. Сконфигурируйте переменные проекта, конструктивные требования, и, опционально, настройки оптимизации.

    Для получения дополнительной информации смотрите, Задают Переменные Проекта, Задают Конструктивные требования Временного интервала в Инструменте, Задают Конструктивные требования Частотного диапазона в Инструменте и Задают Опции Оптимизации.

  4. На вкладке Response Optimization нажмите Options, чтобы открыть диалоговое окно Response Optimization Options.

  5. Выберите вкладку Parallel Options.

  6. Установите флажок Use the parallel pool during optimization.

    Эта опция проверяет на зависимости в вашей модели Simulink. Зависимости от файла отображены в поле списка Model file dependencies и соответствующем пути к файлам в Model path dependencies. Файлы, перечисленные в Model file 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. Нажмите OK.

  10. В инструменте Response Optimization нажмите 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. Проверяйте, есть ли у удаленных рабочих доступ ко всем зависимостям моделей. Зависимости моделей включают переменные данных и файлы, требуемые моделью запускаться.

    Чтобы узнать больше, смотрите Зависимости моделей.

Почему не делает оптимизации Используя остановку параллельных вычислений, когда я нажимаю Stop Optimization Button?

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

Смотрите также

| | |

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

Больше о