Можно сконфигурировать программное обеспечение в цикле (SIL) или процессор в цикле (PIL) симуляция, чтобы произвести метрики времени выполнения для задач и функций в сгенерированном коде. Программное обеспечение вычисляет времена выполнения из данных, которые получены через отладку кода, добавленную к SIL или приложению PIL или сгенерированному коду под тестом. Можно использовать метрики времени выполнения, чтобы определить, удовлетворяет ли сгенерированный код требования для развертывания приложений на целевом компьютере.
Например, можно выполнить следующий анализ:
Идентифицируйте задачи, которые требуют большей части времени. Задачами являются основные точки входа в сгенерированный код. Например, ступенчатая функция для частоты дискретизации или
функция.model
_initialize
В этих задачах исследуйте секции кода, которые требуют большей части времени.
Идентифицируйте, что изменения во время выполнения в зависимости от времени продвигаются.
При попытке уменьшать времена выполнения, результаты анализа помогают вам фокусироваться на самых критических секциях кода. Чтобы наблюдать изменения эффективности для обновленной модели, повторно выполните SIL симуляцию или PIL симуляцию и сравните новые метрики с предыдущими метриками.
Примечание
Измерения времени выполнения зависят значительно от оборудования, которое вы используете. Для надежных результатов соберите метрики времени выполнения с помощью оборудования, на котором вы планируете развернуть сгенерированный код, то есть, запустите PIL симуляции, которые выполняют код на вашем целевом компьютере. SIL симуляции, которые выполняют код на вашем хосте - компьютере, не могут произвести представительные метрики.
Когда SIL симуляция или PIL симуляция завершены, вы можете:
Просмотрите метрики времени выполнения через окно экрана или отчет.
Используйте Инспектора Данных моделирования, чтобы просмотреть и сравнить изменение времен выполнения по симуляции.
Анализируйте измерения в MATLAB® среда.
Сконфигурировать профилирование выполнения кода для SIL симуляции или PIL симуляции:
В вашей топ-модели откройте диалоговое окно Configuration Parameters и выберите Code Generation> панель Verification.
Установите флажок Measure task execution time.
В течение функциональных времен выполнения, от Measure function execution times выпадающий список, избранная одна из этих опций:
Coarse (referenced models and subsystems only)
– если вы хотите проанализировать сгенерированный функциональный код для основных компонентов модели.
Detailed (all function call sites)
– если вы хотите проанализировать сгенерированный функциональный код для всех блоков в модели.
В поле Workspace variable задайте имя. Когда вы запускаете симуляцию, программное обеспечение генерирует переменную с этим именем в базовом рабочем пространстве MATLAB. Переменная содержит измерения времени выполнения и является объектом типа coder.profile.ExecutionTime
.
Если флажок Data Import/Export> Single simulation output устанавливается, программное обеспечение создает переменную в Simulink.SimulationOutput
возразите, что вы задаете.
Из опций Сохранения выпадающий список выберите одну из этих опций:
Summary data only
— Потоковые времена выполнения Инспектору Данных моделирования во время симуляции. Храните минимальную информацию в конце симуляции. Используйте эту опцию, если вы хотите сгенерировать только отчет и уменьшать использование памяти, например, в долгой симуляции.
All data
— Потоковые времена выполнения Инспектору Данных моделирования во время симуляции. Сохраните профили времени выполнения в базовом рабочем пространстве и сгенерируйте отчет. После симуляции можно использовать методы от coder.profile.ExecutionTime
и coder.profile.ExecutionTimeSection
классы, чтобы получить измерения времени выполнения для каждого вызова каждого профилируемого раздела кода, который происходит во время симуляции.
Если вы выбираете эту опцию, метрическое окно экрана и сгенерированный отчет отображают Инспектора Данных моделирования значок. Когда вы кликаете по значку, программное обеспечение импортирует результаты симуляции в Инспектора Данных моделирования. Можно затем построить времена выполнения и управлять и сравнить графики от различных симуляций.
Metrics only
– Уменьшает использование полосы пропускания для канала связи между Simulink® и целевое приложение. Во время симуляции программное обеспечение не передает времена выполнения потоком Инспектору Данных моделирования. На целевом компьютере программное обеспечение хранит максимальные времена выполнения, средние времена выполнения и количество вызовов. В конце симуляции Simulink загружает данные от целевого компьютера до вашего компьютера разработчика.
Нажмите OK.
Для PIL симуляции:
Необходимо сконфигурировать специфичный для оборудования таймер. Когда вы настраиваете целевую возможность соединения, создаете объект - таймер. Это действие не требуется для SIL симуляции. Для получения дополнительной информации смотрите Настроенную Возможность соединения PIL при помощи целевого Пакета или Создайте Целевую Настройку Возможности соединения PIL для Simulink.
Можно удалить издержки инструментирования со времен выполнения. Для получения дополнительной информации смотрите, Удаляют Издержки Инструментирования из Измерений Времени выполнения.
Можно управлять гранулярностью времени выполнения, профилируя, то есть, предотвратить сложение отладки кода на определенные сайты вызова функции. Посредством управления профильной гранулярности вы можете:
Фокусируйтесь на эффективности компонентов модели, которые требуют улучшения. Например, после начального запуска, отключите профилирование для блоков, которые требуют небольшого времени вычислений. Это действие сокращает количество элементов, отображенных профильным отчетом.
Уменьшайте отладку кода наверху. Например, для простых функций, отладка кода наверху может быть больше времени выполнения функционального кода.
Чтобы сгенерировать метрики времени выполнения для задач только, на Code Generation> панель Verification диалогового окна Configuration Parameters, устанавливают флажок Measure task execution time и устанавливают Measure function execution times на Off
.
Чтобы сгенерировать функциональные данные о выполнении для моделей, на которые ссылаются, и атомарных подсистем в топ-модели, на Code Generation> панель Verification, устанавливают флажок Measure task execution time и устанавливают Measure function execution times на Coarse (referenced models and subsystems only)
.
Генерация функциональных данных о выполнении требует вставки зондов измерения в сгенерированный код. Программное обеспечение вставляет зонды измерения для атомарной подсистемы, только если вы устанавливаете поле Function packaging (на вкладке Code Generation диалогового окна Function Block Parameters) к любому Nonreusable function
или Reusable function
. Если поле установлено в Auto
, затем вставка зондов зависит от упаковочного выбора, который следует из Auto
установка. Если поле установлено в Inline
, программное обеспечение не вставляет зонды.
Примечание
В сгенерированном коде программное обеспечение переносит каждый вызов функции с зондами измерения кроме тех случаев, когда:
Сайт вызова не может быть перенесен из-за сворачивания выражения (см., Минимизируют Расчеты и Устройство хранения данных для Промежуточных Результатов в Блоке Выходные параметры).
Сайт вызова расположен в разделяемом служебном коде (см. Совместное использование Служебного Кода).
Сгенерировать функциональные времена выполнения для иерархий модели - ссылки:
В топ-модели откройте диалоговое окно Configuration Parameters и выберите Code Generation> панель Verification.
Установите флажок Measure task execution time
Для каждого блока Model, который вы хотите профилировать, задайте Measure function execution times только на контрольном уровне, для которого вы требуете функциональных времен выполнения.
Например, рассмотрите топ-модель, которая имеет блок A Model, который в свою очередь содержит блок B Model.
Если вы хотите сгенерировать времена выполнения для функций из модели B, выберите Measure task execution time для топ-модели и задайте Measure function execution times для модели B.
Эти параметры топ-модели заменяют соответствующие параметры моделей, на которые ссылаются:
Measure task execution time. Если вы отключаете этот параметр для топ-модели, вы также отключаете профилирование функции для моделей, на которые ссылаются.
Workspace variable
Save options
К профилированию выполнения кода системы управления для блока в модели, например, блока подсистемы, используют CodeProfilingOverride
параметры блоков:
В Редакторе Simulink выберите блок.
В Командном окне, запуске:
set_param(gcb, 'CodeProfilingOverride', blockParameterValue)
blockParameterValue
:
'off'
– Отключает профилирование для блока.
'on'
– Позволяет профилировать для блока, если профилирование включено для родительской модели.
'inherit'
(значение по умолчанию) – Применяет профильные настройки родительского блока.
При изменении блока профильная настройка не вызывает регенерацию производственного кода.
Если у вашей топ-модели есть блок PIL, выполнение, профильные настройки, которые применяются к блоку PIL, являются настройками из исходной модели, что вы раньше создавали блок PIL. Смотрите Симуляцию с блоками Subsystem. Вы не можете использовать CodeProfilingOverride
управлять профилированием для блока PIL.
Сохраните опции | Измерьте функциональные времена выполнения | Переменная Workspace | Измерьте время выполнения задачи