Можно сконфигурировать программное обеспечение в цикле (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
возразите, что вы задаете.
От Save options выпадающий список выберите одну из этих опций:
Summary data only
— Если вы хотите сгенерировать только отчет и уменьшать использование памяти, например, во время долгой симуляции.
All data
— Позволяет вам генерировать отчет и хранить профили времени выполнения в базовом рабочем пространстве. После симуляции можно использовать методы от coder.profile.ExecutionTime
и coder.profile.ExecutionTimeSection
классы, чтобы получить измерения времени выполнения для каждого вызова каждого профилируемого раздела кода, который происходит во время симуляции.
Metrics only
– Уменьшает использование пропускной способности для канала связи между Simulink® и целевым приложением. Во время симуляции программное обеспечение хранит на временах выполнения максимума целевого компьютера, средних временах выполнения и количестве вызовов. В конце симуляции Simulink загружает данные от целевого компьютера до вашего компьютера разработчика.
Нажмите OK.
Для PIL симуляции необходимо сконфигурировать специфичный для оборудования таймер. Когда вы настраиваете настройку возможности соединения для своей цели, создаете объект - таймер. Это действие не требуется для SIL симуляции.
Если вы выбираете All data
от Save options выпадающий список, метрическое окно экрана и сгенерированный отчет отображают Инспектора Данных моделирования значки. Когда вы кликаете по одному из значков, программное обеспечение импортирует результаты симуляции в Инспектора Данных моделирования. Можно затем построить времена выполнения и управлять и сравнить графики от различных симуляций.
Можно управлять гранулярностью времени выполнения, профилируя, то есть, предотвратить сложение отладки кода на определенные сайты вызова функции. Посредством управления профильной гранулярности вы можете:
Фокусируйтесь на производительности компонентов модели, которые требуют улучшения. Например, после начального запуска, отключите профилирование для блоков, которые требуют небольшого времени вычислений. Это действие сокращает количество элементов, отображенных профильным отчетом.
Уменьшайте отладку кода наверху. Например, для простых функций, отладка кода наверху может быть больше времени выполнения функционального кода.
Чтобы сгенерировать метрики времени выполнения для задач только, на 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
, программное обеспечение не вставляет зонды.
В сгенерированном коде программное обеспечение переносит каждый вызов функции с зондами измерения кроме тех случаев, когда:
Сайт вызова не может быть перенесен из-за сворачивания выражения (см., Минимизируют Расчеты и Устройство хранения данных для Промежуточных Результатов в Блоке Выходные параметры (Simulink Coder)).
Сайт вызова расположен в разделяемом служебном коде (см. Совместное использование Служебного Кода (Simulink Coder)).
Сгенерировать функциональные времена выполнения для иерархий модели - ссылки:
В топ-модели откройте диалоговое окно 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. Смотрите Симуляцию с Блоками Из Подсистем. Вы не можете использовать CodeProfilingOverride
управлять профилированием для блока PIL.
Измерьте функциональные времена выполнения | Измерьте время выполнения задачи | Сохраните опции | Переменная Workspace