В среде параллельных вычислений можно увеличить скорость генерации кода и компиляции для моделей, содержащих иерархии ссылки большой модели. Достигните скорости путем создавания моделей, на которые ссылаются, параллельно каждый раз, когда условия позволяют. Например, если у вас есть программное обеспечение Parallel Computing Toolbox™, генерация кода и компиляция для каждой модели, на которую ссылаются, могут быть распределены на ядрах многожильного хоста - компьютера. Если у вас также есть программное обеспечение MATLAB® Parallel Server™, можно распределить генерацию кода и компиляцию для каждой модели, на которую ссылаются, через удаленных рабочих в настройке MATLAB Parallel Server.
Улучшение скорости выполнения, понятое при помощи параллельных сборок для моделей, на которые ссылаются, зависит от нескольких факторов. Эти факторы включают, сколько моделей может быть создано параллельно для данной модели, ссылающейся на иерархию, размер моделей, на которые ссылаются и ресурсы параллельных вычислений. Ресурсы включают количество локальных и/или удаленных доступных рабочих и аппаратные атрибуты локальных и удаленных машин. Примерами аппаратных атрибутов является сумма RAM и количество ядер.
Для требований настройки, которые могли примениться к вашей среде параллельных вычислений, смотрите, что Параллель Создает Требования по настройке.
Для описания общего рабочего процесса для того, чтобы создать модели, на которые ссылаются, параллельно каждый раз, когда условия позволяют, смотрите, Создают Модели в Среде Параллельных вычислений.
Для получения информации о том, как сконфигурировать пользовательский конечный файл встраиваемой системы, чтобы поддержать параллельные сборки, видеть, что Модель поддержки Ссылается.
В настройке параллельных вычислений 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
, чтобы закрыть все модели на параллельных рабочих сборки.
Между сборками перезапустите параллельный пул.
Использовать в своих интересах параллельное создание для иерархии модели - ссылки:
Настройте пул локальных и/или удаленных работников MATLAB в вашей среде параллельных вычислений.
Убедитесь, что программное обеспечение Parallel Computing Toolbox лицензируется и устанавливается.
Чтобы использовать удаленных рабочих, убедитесь, что программное обеспечение MATLAB Parallel Server лицензируется и устанавливается.
Выпустите команды MATLAB, чтобы настроить параллельный пул, например, parpool(4)
.
От топ-модели иерархии модели - ссылки откройте диалоговое окно Configuration Parameters. Перейдите к Model Referencing, разделяют на области и выбирают 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 для топ-модели иерархии модели - ссылки, к которой он применяется.
Опционально, включите многословные сообщения для сборок симуляции, сборок генерации кода или обоих. Если вы выбираете многословные сборки, сообщения сборки сообщают о прогрессе каждой параллельной сборки с именем модели.
Чтобы включить многословные сообщения в сборках модели для симуляции, перейдите к Configuration Parameters> Simulation Target> Advanced parameters и выберите Verbose accelerator builds.
Чтобы включить многословные сообщения в сборках модели для генерации кода, перейдите к Configuration Parameters> Code Generation> Advanced parameters и выберите Verbose build.
Многословные опции управляют сообщениями сборки в Окне Команды MATLAB и в параллельных файлах журнала сборки.
Опционально, осмотрите иерархию модели - ссылки, чтобы определить, на основе зависимостей моделей, какие модели созданы параллельно. Например, можно использовать Средство просмотра Зависимости моделей из меню Simulink Analysis> Model Dependencies.
Создайте свою модель. Сообщения в записи Окна Команды 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 позволяет вам просмотреть происходящее состояние сборки или отменить происходящие параллельные сборки моделей. Для получения дополнительной информации, Состояние Процесса сборки вида на море.
Этот пример показывает, как применяют состояние процесса сборки от параллельных сборок. Информация о статусе может помочь вам идентифицировать способы улучшить параллельные сборки путем изменения иерархии модели, на которую ссылаются.
Откройте параллельный пул для процесса сборки и добавьте образцовую папку в путь для всех рабочих.
parpool('local', 2) addpath(fullfile(matlabroot,'toolbox','rtw','rtwdemos','rtwdemo_parallelbuild')) spmd addpath(fullfile(matlabroot,'toolbox','rtw','rtwdemos','rtwdemo_parallelbuild')) end
Откройте модель верхнего уровня в иерархии эталонной модели. Модель rtwdemo_parabuild_a_1
обращается ко многим моделям, на которые ссылаются.
open_system('rtwdemo_parabuild_a_1')
Просмотрите зависимости моделей с Analysis> Model Dependencies> Model Dependency Viewer> Models Only. Это представление отображает зависимости для иерархии модели, на которую ссылаются.
Во время процесса сборки окно Build Process Status отображает прогресс генератора кода, когда это прокладывает себе путь иерархия модели, на которую ссылаются. Генератор кода создает модели, на которые ссылаются, в порядке, что они блокируют создание моделей далее дерево зависимости.
Запустите параллельную сборку иерархии модели, на которую ссылаются, и откройте окно Build Process Status.
rtwbuild('rtwdemo_parabuild_a_1','OpenBuildStatusAutomatically',true)
В то время как сборка прогрессирует, окно Build Process Status отображает состояние для каждой модели, на которую ссылаются.
Таблица описывает типы состояния сборки.
Состояние процесса сборки | Описание |
---|---|
Blocked | Генератор кода не может запланировать сборку модели, потому что сборка блокируется зависимостями. Например, другая сборка модели должна завершиться, прежде чем блокированная сборка может быть запланирована. |
Scheduled | Для параллельных процессов сборки генератор кода планирует сборку модели, когда это не будет блокировано зависимостями. Сборка модели ожидает в запланированном состоянии, пока параллельное ядро не доступно, чтобы обработать сборку модели. |
Building | Генератор кода выполняет процесс сборки для модели. |
Completed или Error | Когда процесс сборки выходит успешно, состояние Завершается. Когда процесс сборки не является успехом, состоянием является Ошибка. |
Up To Date | Когда процесс сборки обнаруживает, что не должен генерировать код (например, сгенерированный код является текущим с моделью), состояние Актуально. |
Canceling или Canceled | Когда вы используете кнопку Cancel Build, процесс сборки изменяет состояние неполных сборок к Отмене. После обработки операции Canceling процесс сборки изменяет состояние этих сборок к Отмененному. |
Протекать время показывает вам, где процесс сборки проводит время. Используйте дерево зависимости иерархии модели и протекать время сборок эталонной модели, чтобы идентифицировать местоположения, где процесс сборки проводит большую часть времени и ограничивает прогресс сборки. Некоторые опции для сокращения параллельного времени изготовления включают:
Реструктурируйте иерархию модели, на которую ссылаются, чтобы уменьшать время изготовления для отдельных моделей.
Обеспечьте достаточных параллельных рабочих в пуле, чтобы совпадать с количеством, создаваемых зависимостей моделей, на которые ссылаются.
coder.buildstatus.close
| coder.buildstatus.open
| rtwbuild
| slbuild