Уменьшайте время изготовления для моделей, на которые ссылаются, при помощи параллельных сборок

В среде параллельных вычислений можно увеличить скорость генерации кода и компиляции для моделей, содержащих иерархии ссылки большой модели. Достигните скорости путем создавания моделей, на которые ссылаются, параллельно каждый раз, когда условия позволяют. Например, если у вас есть программное обеспечение Parallel Computing Toolbox™, генерация кода и компиляция для каждой модели, на которую ссылаются, могут быть распределены на ядрах многожильного хоста - компьютера. Если у вас также есть программное обеспечение MATLAB® Parallel Server™, можно распределить генерацию кода и компиляцию для каждой модели, на которую ссылаются, через удаленных рабочих в настройке MATLAB Parallel Server.

Параллельное создание для иерархий ссылки большой модели

Улучшение скорости выполнения, понятое при помощи параллельных сборок для моделей, на которые ссылаются, зависит от нескольких факторов. Эти факторы включают, сколько моделей может быть создано параллельно для данной модели, ссылающейся на иерархию, размер моделей, на которые ссылаются и ресурсы параллельных вычислений. Ресурсы включают количество локальных и/или удаленных доступных рабочих и аппаратные атрибуты локальных и удаленных машин. Примерами аппаратных атрибутов является сумма RAM и количество ядер.

Кэш Simulink® (.slxc) файлы сгенерированы для целой иерархии модели - ссылки во время параллельной сборки. Для получения дополнительной информации смотрите Файлы кэша Simulink для Инкрементной Генерации кода (Simulink Coder).

Для требований настройки, которые могли примениться к вашей среде параллельных вычислений, смотрите, что Параллель Создает Требования по настройке.

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

Для получения информации о том, как сконфигурировать пользовательский конечный файл встраиваемой системы, чтобы поддержать параллельные сборки, видеть, что Модель поддержки Ссылается (Simulink Coder).

Примечание

В настройке параллельных вычислений MATLAB Parallel Server параллельное здание спроектировано, чтобы работать в интерактивном режиме с программным обеспечением. Можно инициировать сборки от пользовательского интерфейса Simulink или из Окна Команды MATLAB с помощью команд, таких как slbuild. Вы не можете инициировать сборки с помощью batch или другие рабочие процессы пакетного режима.

Параллель, создающая Требования по настройке

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

  • Для локальных пулов хост-машина должна иметь достаточно RAM, чтобы поддержать количество локальных рабочих (сеансы работы с MATLAB), которые вы планируете использовать. Например, использование parpool(4) создать параллельный пул с четырьмя рабочими приводит к пяти сеансам работы с MATLAB на вашей машине. Каждый пул использует объем памяти, требуемый в MATLAB и генераторе кода при запуске. Для требований к памяти смотрите Системные требования для MATLAB & Simulink.

  • Удаленные рабочие MATLAB Parallel Server, участвующие в параллельной сборке и клиентской машине, должны использовать общую платформу и компилятор.

  • Сопоставимая среда MATLAB должна быть настроена на каждом сеансе работника MATLAB как на клиентском сеансе MATLAB — например, разделяемые переменные базового рабочего пространства, настройки пути MATLAB, и т.д. Один подход должен использовать PreLoadFcn коллбэк топ-модели. Если вы конфигурируете свою модель, чтобы загрузить топ-модель с каждым сеансом работника MATLAB, его функция предварительной нагрузки может использоваться в любой настройке сеанса работника MATLAB.

  • Возможно вызвать ошибку сборки путем доверия коллбэкам, чтобы загрузить переменные при выполнении инкрементной параллельной сборки (сборка иерархии модели, на которую ссылаются). Чтобы избежать этой проблемы во время параллельных сборок, используйте одну из этих опций:

    • Не используйте коллбэк, чтобы управлять переменной рабочей области моделей, на которые ссылаются,

    • Между сборками, запуск команды spmd, bdclose all, end закрыть все модели на параллельных рабочих сборки.

    • Между сборками перезапустите параллельный пул.

Создайте модели в среде параллельных вычислений

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

  1. Настройте пул локальных и/или удаленных работников MATLAB в вашей среде параллельных вычислений.

    1. Убедитесь, что программное обеспечение Parallel Computing Toolbox лицензируется и устанавливается.

    2. Чтобы использовать удаленных рабочих, убедитесь, что программное обеспечение MATLAB Parallel Server лицензируется и устанавливается.

    3. Выпустите команды MATLAB, чтобы настроить параллельный пул, например, parpool(4).

  2. От топ-модели иерархии модели - ссылки откройте диалоговое окно Configuration Parameters. Установите флажок Enable parallel model reference builds (Simulink). Этот выбор включает параметру MATLAB worker initialization for builds (Simulink).

    Для MATLAB worker initialization for builds выберите одно из следующих значений:

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

    • Copy base workspace если желательно это, программное обеспечение пытается скопировать базовое рабочее пространство в каждого рабочего. Задайте это значение, если вы используете скрипт настройки, чтобы подготовить базовое рабочее пространство к многоуровневым моделям, чтобы использовать.

    • Load top model если желательно это, программное обеспечение загружает топ-модель на каждом рабочем. Задайте это значение, если топ-модель в иерархии модели - ссылки обрабатывает настройку базового рабочего пространства. Примером является функция load модели.

    Примечание

    Только установите Enable parallel model reference builds для топ-модели иерархии модели - ссылки, к которой он применяется.

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

    • Verbose accelerator builds.

    • Verbose build

    Вы видите сообщения сборки в Окне Команды MATLAB и в параллельных файлах журнала сборки.

  4. Опционально, смотрите иерархию модели - ссылки, чтобы определить, на основе зависимостей моделей, какие модели созданы параллельно. Можно использовать Средство просмотра Зависимости моделей. На вкладке Modeling, в разделе Evaluate & Manage, выбирают Dependencies> Referenced Model Instances.

  5. Создайте свою модель. Сообщения в записи Окна Команды MATLAB, когда каждая параллельная или последовательная сборка запускается и заканчивается. Порядок, в котором сборка моделей, на которую ссылаются, недетерминирована. Они могли создать в различном порядке каждый раз, когда модель создана.

    Если вам нужно больше информации о параллельной сборке, например, если сборка перестала работать, смотрите, Определяют местоположение Параллельных Журналов Сборки.

Найдите параллельные журналы сборки

Если многословные сборки включены, когда вы создаете модель, для которой модели, на которые ссылаются, созданы параллельно, сообщения в записи Окна Команды MATLAB, когда каждая параллельная или последовательная сборка запускается и заканчивается. Например,

### Initializing parallel workers for parallel model reference build.
### Parallel worker initialization complete.
### Starting parallel model reference SIM build for 'bot_model001'
### Starting parallel model reference SIM build for 'bot_model002'
### Starting parallel model reference SIM build for 'bot_model003'
### Starting parallel model reference SIM build for 'bot_model004'
### Finished parallel model reference SIM build for 'bot_model001'
### Finished parallel model reference SIM build for 'bot_model002'
### Finished parallel model reference SIM build for 'bot_model003'
### Finished parallel model reference SIM build for 'bot_model004'
### Starting parallel model reference RTW build for 'bot_model001'
### Starting parallel model reference RTW build for 'bot_model002'
### Starting parallel model reference RTW build for 'bot_model003'
### Starting parallel model reference RTW build for 'bot_model004'
### Finished parallel model reference RTW build for 'bot_model001'
### Finished parallel model reference RTW build for 'bot_model002'
### Finished parallel model reference RTW build for 'bot_model003'
### Finished parallel model reference RTW build for 'bot_model004'

Чтобы получить более подробную информацию о параллельной сборке, можно исследовать параллельный журнал сборки. Для каждой модели, на которую ссылаются, созданной параллельно, процесс сборки генерирует файл с именем model_buildlog.txt, где model имя модели, на которую ссылаются. Этот файл содержит журнал полной сборки для той модели.

Если параллельная сборка завершается, можно найти файл журнала сборки в подпапке сборки, соответствующей модели, на которую ссылаются. Например, для сборки модели bot_model004, на которую ссылаются,, ищите файл журнала сборки bot_model004_buildlog.txt в подпапке модели, на которую ссылаются, такой как build_folder/slprj/grt/bot_model004, build_folder/slprj/ert/bot_model004, или build_folder/slprj/sim/bot_model004. Журнал сборки (диагностическое средство просмотра) предоставляет относительный путь местоположению каждого файла журнала сборки.

Если параллель создает сбои, вы видели выход, похожий на следующее:

### Initializing parallel workers for parallel model reference build.
### Parallel worker initialization complete.
...
### Starting parallel model reference RTW build for 'bot_model002'
### Starting parallel model reference RTW build for 'bot_model003'
### Finished parallel model reference RTW build for 'bot_model002'
### Finished parallel model reference RTW build for 'bot_model003'
### Starting parallel model reference RTW build for 'bot_model001'
### Starting parallel model reference RTW build for 'bot_model004'
### Finished parallel model reference RTW build for 'bot_model004'
### The following error occurred during the parallel model reference RTW build for
'bot_model001':

Error(s) encountered while building model "bot_model001"

### Cleaning up parallel workers.

Если параллельная сборка перестала работать, можно найти файл журнала сборки в подпапке модели, на которую ссылаются, под подпапкой сборки/par_mdl_ref/model. Например, для не пройдено параллельной сборки модели bot_model001, ищите файл журнала сборки bot_model001_buildlog.txt в подпапке, такой как build_folder/par_mdl_ref/bot_model001/slprj/grt/bot_model001, build_folder/par_mdl_ref/bot_model001/slprj/ert/bot_model001, или build_folder/par_mdl_ref/bot_model001/slprj/sim/bot_model001.

Просмотрите состояние процесса сборки

Окно Build Process Status позволяет вам просмотреть происходящее состояние сборки или отменить происходящие параллельные сборки моделей. После завершения сборки модели можно просмотреть состояние завершения при помощи окна Build Process Status. Для получения дополнительной информации смотрите, Применяют Состояние Процесса сборки, чтобы Улучшить Параллельные Сборки.

Примечание

Окно Build Process Status поддерживает параллельные сборки иерархий модели, на которые ссылаются. Не используйте окно Build Process Status в последовательных (непараллельных) сборках.

Чтобы открыть окно Build Process Status, используйте любую из этих опций:

  • Открыть окно Build Process Status для model, в командном окне введите:

    coder.buildstatus.open('model')
  • Открыть окно Build Process Status для model с rtwbuild функция, в командном окне, вводит:

    rtwbuild('model', ...
        'OpenBuildStatusAutomatically',true)
  • Открыть окно Build Process Status для model с slbuild функция, в командном окне, вводит:

    slbuild('model','StandaloneCoderTarget', ...
        'OpenBuildStatusAutomatically',true)

Чтобы отменить происходящую сборку модели, окно Build Process Status обеспечивает кнопку Cancel. Эта кнопка отменяет сборку после завершения текущей модели или сборки модели, на которую ссылаются. Используя отмену, чтобы остановить сборку заканчивает процесс сборки, не создавая устаревшие артефакты сборки, которые требуют, чтобы постсборка вымылась.

Примените состояние процесса сборки, чтобы улучшить параллельные сборки

Окно Build Process Status позволяет вам просмотреть происходящее состояние сборки или отменить происходящие параллельные сборки моделей. Для получения дополнительной информации, Состояние Процесса сборки вида на море.

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

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

    parpool('local', 2)
    addpath(fullfile(matlabroot,'toolbox','rtw','rtwdemos','rtwdemo_parallelbuild'))
    spmd
    addpath(fullfile(matlabroot,'toolbox','rtw','rtwdemos','rtwdemo_parallelbuild'))
    end
  2. Откройте модель верхнего уровня в иерархии эталонной модели. rtwdemo_parabuild_a_1 модель обращается ко многим моделям, на которые ссылаются.

    open_system('rtwdemo_parabuild_a_1')

  3. Просмотрите зависимости моделей со Средством просмотра Зависимости моделей. На вкладке Modeling, в разделе Evaluate & Manage, выбирают Dependencies> Referenced Model Instances.

    Во время процесса сборки окно Build Process Status отображает прогресс генератора кода, когда это прокладывает себе путь иерархия модели, на которую ссылаются. Генератор кода создает модели, на которые ссылаются, в порядке, что они блокируют создание моделей далее дерево зависимости.

  4. Запустите параллельную сборку иерархии модели, на которую ссылаются, и откройте окно Build Process Status.

    rtwbuild('rtwdemo_parabuild_a_1','OpenBuildStatusAutomatically',true)
  5. В то время как сборка прогрессирует, окно Build Process Status отображает состояние для каждой модели, на которую ссылаются.

Таблица описывает типы состояния сборки.

Состояние процесса сборкиОписание

Blocked

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

Scheduled

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

Building

Генератор кода выполняет процесс сборки для модели.

Completed или Error

Когда процесс сборки выходит успешно, состояние Завершается. Когда процесс сборки не является успехом, состоянием является Ошибка.

Up To Date

Когда процесс сборки обнаруживает, что не должен генерировать код (например, сгенерированный код является текущим с моделью), состояние Актуально.

Canceling или Canceled

Когда вы используете кнопку Cancel Build, процесс сборки изменяет состояние неполных сборок к Отмене. После обработки операции Canceling процесс сборки изменяет состояние этих сборок к Отмененному.

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

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

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

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

| | |

Похожие темы