Профилирование выполнения кода с SIL и PIL

Можно сконфигурировать симуляцию цикл (SIL) или цикл (PIL), чтобы получить метрики времени выполнения для задач и функций в сгенерированном коде. Программа вычисляет времена выполнения из данных, которые получаются посредством отладок кода, добавленных в приложение SIL или PIL или сгенерированный тестируемый код. Можно использовать метрики времени выполнения, чтобы определить, соответствует ли сгенерированный код требованиям для развертывания приложений на целевом компьютере.

Для примера можно выполнить следующий анализ:

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

  2. В этих задачах исследуйте секции кода, которые требуют наибольшего времени.

  3. Идентифицируйте изменения во времени выполнения по временным шагам.

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

Примечание

Измерения во время выполнения сильно зависят от используемого оборудования. Для достоверных результатов соберите метрики времени выполнения с помощью оборудования, на котором вы планируете развернуть сгенерированный код, то есть запуск PIL симуляций, которые выполняют код на вашем целевом компьютере. SIL симуляции, которые выполняют код на вашем хосте-компьютере, могут не выдать репрезентативные метрики.

Когда симуляция SIL или PIL завершена, можно:

  • Просмотрите метрики во время выполнения через окно отображения или отчет.

  • Используйте Данные моделирования Inspector, чтобы просмотреть и сравнить вариации времен выполнения по симуляции.

  • Анализируйте измерения в MATLAB® окружение.

Сконфигурируйте профилирование выполнения кода

Чтобы сконфигурировать профилирование выполнения кода для SIL или PIL симуляции:

  1. В модели верхней части откройте диалоговое окно Параметры конфигурации и выберите панель Code Generation > Verification.

  2. Установите флажок Measure task execution time.

  3. Для времен выполнения функции в выпадающем списке Measure function execution times выберите одну из следующих опций:

    • Coarse (referenced models and subsystems only) - если вы хотите проанализировать сгенерированный код функции для основных компонентов модели.

    • Detailed (all function call sites) - если вы хотите проанализировать сгенерированный код функции для всех блоков в модели.

  4. В поле Workspace variable укажите имя. Когда вы запускаете симуляцию, программное обеспечение генерирует переменную с этим именем в базовом рабочем пространстве MATLAB. Переменная содержит измерения во время выполнения и является объектом типа coder.profile.ExecutionTime.

    Если установлен флажок Data Import/Export > Single simulation output, программа создает переменную в Simulink.SimulationOutput заданный объект.

  5. В раскрывающемся списке Save options выберите одну из следующих опций:

    • Summary data only - Если вы хотите сгенерировать только отчет и уменьшить использование памяти, например, во время долгой симуляции.

    • All data - Позволяет вам сгенерировать отчет и хранить профили времени выполнения в базовом рабочем пространстве. После симуляции можно использовать методы из coder.profile.ExecutionTime и coder.profile.ExecutionTimeSection классы для извлечения измерений во время выполнения для каждого вызова к каждому профилированному разделу кода, который происходит во время симуляции.

      При выборе этой опции в окне отображения метриков и сгенерированного отчета отображается значок Simulation Data Inspector. При нажатии значка программа импортирует результаты симуляции в Данные моделирования Inspector. Затем можно построить времена выполнения и управлять и сравнивать графики из различных симуляций.

    • Metrics only -- Уменьшает использование полосы пропускания для канала связи между Simulink® и целевое приложение. Во время симуляции программное обеспечение сохраняет на целевом компьютере максимальные времена выполнения, средние времена выполнения и количество вызовов. В конце симуляции Simulink загружает данные с целевого компьютера на ваш компьютер разработчика.

  6. Нажмите OK.

Для PIL симуляции:

Управляйте зернистостью профилирования

Можно контролировать гранулярность профилирования во время выполнения, то есть предотвратить сложение отладки кода к конкретным сайтам вызова функции. Посредством управления зернистостью профилирования можно:

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

  • Уменьшите накладные расходы на отладку кода. Для примера для простых функций накладные расходы на отладку кода могут быть больше, чем время выполнения кода функции.

Чтобы сгенерировать метрики времени выполнения только для задач, на панели Code Generation > Verification диалогового окна Configuration Parameters установите флажок Measure task execution time и установите для Measure function execution times значение Off.

Произвести данные выполнения функции для моделей, на которые ссылаются, и атомарных подсистем в топ-модели, на флажке <reservedrangesplaceholder4>> <reservedrangesplaceholder3> pane, select the <reservedrangesplaceholder2> и установить Measure function execution times в Coarse (referenced models and subsystems only).

Генерация данных выполнения функции требует вставки измерения зондов в сгенерированный код. Программа вставляет измерение зонды для атомарной подсистемы, только если задать для поля Function packaging (на вкладке Code Generation диалогового окна Function Параметров блоков) значение Nonreusable function или Reusable function. Если для поля задано значение Auto, тогда вставка зондов зависит от упаковочного выбора, который является результатом Auto настройка. Если для поля задано значение Inlineпрограммное обеспечение не вставляет зонды.

Примечание

В сгенерированном коде программное обеспечение оборачивает каждый вызов функции датчиками измерения, кроме тех случаев, когда:

Чтобы сгенерировать времена выполнения функций для иерархий модели-ссылки:

  1. В верхней модели откройте диалоговое окно Параметры конфигурации (Configuration Parameters) и выберите панель Code Generation > Verification.

  2. Установите флажок Measure task execution time

  3. Для каждого блока Model, который вы хотите профилировать, задайте Measure function execution times только на ссылку уровне, для которого вам требуется времена выполнения функции.

Например, рассмотрим верхнюю часть, которая имеет Model блок A, который, в свою очередь, содержит Model блок B.

Если вы хотите сгенерировать времена выполнения для функций из модели B, выберите Measure task execution time для верхней модели и задайте Measure function execution times для модели B.

Эти параметры верхней модели переопределяют соответствующие параметры ссылочных моделей:

  • Measure task execution time. Если вы отключаете этот параметр для верхней части, вы также отключаете профилирование функции для моделей-ссылок.

  • Workspace variable

  • Save options

Чтобы код системы управления профилирование выполнения для блока в модели, для примера, блока подсистемы, используйте CodeProfilingOverride Параметры блоков:

  1. В редакторе Simulink выберите блок.

  2. В Командном окне выполните команду:

    set_param(gcb, 'CodeProfilingOverride', blockParameterValue)
    Используйте одно из следующих значений для blockParameterValue:

    • 'off' -- Отключает профилирование для блока.

    • 'on' -- Включает профилирование для блока, если включено профилирование для родительской модели.

    • 'inherit' (по умолчанию) -- Применяет настройки профилирования родительского блока.

Изменение строения профилирования блоков не вызывает регенерации производственного кода.

Если ваша верхняя часть имеет блок PIL, настройки профилирования выполнения, применяемые к блоку PIL, являются настройками из исходной модели, которые вы использовали для создания блока PIL. См. Симуляцию с блоками Subsystem. Вы не можете использовать CodeProfilingOverride для управления профилированием для блока PIL.

См. также

| | |

Похожие темы