exponenta event banner

Работа

Сокращение использования памяти и повышение скорости выполнения генерируемого кода

При разработке моделей Simulink ®, из которых предполагается генерировать код, используйте параметр конфигурации модели, чтобы уменьшить потребление ОЗУ и ПЗУ и ускорить выполнение кода. Если требуется больше защитного кода, за счет некоторой эффективности можно отключить один или несколько из этих параметров.

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

Темы

Основы оптимизации кода

Увеличение скорости генерации кода

Измените модель, чтобы увеличить скорость, с которой генератор кода генерирует код.

Инструменты и методы оптимизации

Применение инструментов, таких как Model Advisor, и методов оптимизации модели для создания кода.

Оптимизация компилятора управления

Управление оптимизацией компилятора для make-файла на уровне интерфейса пользователя Simulink.

Оборонительное программирование

Скорость выполнения субномера

Минимизируйте возможность замедления выполнения или переполнения из-за задержки вычисления субнормального числа.

Удаление кода из преобразования с плавающей запятой в целое число, которое переносит значения за пределы диапазона

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

Удалить код, сопоставляющий NaN целочисленному нулю

Если входные значения NaN не существует в приложении, укажите, что генератор кода удаляет код, который сопоставляется NaN до целого нуля.

Отключить нефинитные проверки или вложение для математических функций

Используйте записи настройки библиотеки замены кода (CRL), чтобы выборочно отключить нефинитные проверки математических функций и вложение математических функций.

Сокращение объема копий данных

Минимизация вычислений и хранения промежуточных результатов на блочных выходах

Генератор кода сворачивает вычисления блоков в одно выражение вместо создания отдельных операторов кода и объявлений хранения для каждого блока в модели.

Сворачивание выражений

Код кратности выражения для минимизации вычисления промежуточных результатов на блочных выходах и сохранения таких результатов во временных буферах или переменных.

Включение и повторное использование выходных данных локального блока в сгенерированном коде

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

Создание эффективного кода для сигналов шины

Моделирование шин для максимизации эффективности генерируемого кода.

Встроенные инвариантные сигналы

Используйте числовые значения инвариантных сигналов вместо их символических имен в сгенерированном коде.

Использование функции memcpy для оптимизации сгенерированного кода для векторных назначений

Генератор кода оптимизирует сгенерированный код для векторных назначений путем замены for петли с memcpy вызовы функций.

Создание эффективного кода для сигналов шины

Моделирование шин для максимизации эффективности генерируемого кода.

Использование памяти

Оптимизация векторной операции

Генератор кода сокращает память стека, заменяя временные локальные массивы локальными переменными.

Сокращение использования памяти для логических переменных и переменных конфигурации состояния

Уменьшите объем памяти, в которой хранятся переменные конфигурации состояния и Boolean переменные.

Оптимизация сгенерированного кода с помощью функции memset

memset функция очищает внутреннее хранилище, независимо от типа, до целочисленной битовой комбинации 0 (то есть все биты выключены).

Настройка выделения пространства стека

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

Настройка порога разбиения на шлейфы

Начиная со значения по умолчанию 5, генератор кода начинает использовать for цикл вместо отдельных операторов для назначения значений элементам массива сигналов или параметров.

Укажите тип данных с одной точностью для встраиваемого приложения

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

Создание эффективного кода путем указания типов данных для параметров блока

Чтобы создать более эффективный код, сопоставьте типы данных параметров с типами данных сигнала или сохраните параметры в меньших типах данных.

Оптимизация сгенерированного кода с использованием логических данных для логических сигналов

Генератор кода оптимизирует сгенерированный код, сохраняя логические сигналы как Boolean типы данных.

Оптимизация использования памяти для счетчиков времени

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

Скорость выполнения

Оптимизация сгенерированного кода путем объединения нескольких для конструкций

Генератор кода использует анализ зависимости данных для объединения for конструкции для уменьшения размера статического кода и ветвления среды выполнения.

Настройка порога разбиения на шлейфы

Начиная со значения по умолчанию 5, генератор кода начинает использовать for цикл вместо отдельных операторов для назначения значений элементам массива сигналов или параметров.

Устранение путей мертвого кода в сгенерированном коде

Генератор кода устраняет неработающие (то есть неиспользуемые) пути кода из сгенерированного кода.

Умножение с плавающей запятой для обработки коррекции чистого откоса

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

Удалить код для блоков, не влияющих на результаты вычислений

Генератор кода увеличивает скорость выполнения и уменьшает потребление ПЗУ, удаляя код, который не влияет на результаты вычислений.

Встроенные числовые значения параметров блока

Сократите использование глобальной оперативной памяти, встроив числовые значения букв параметров блока.

Оптимизация сгенерированного кода с использованием данных с фиксированной точкой с помощью Simulink ®, Stateflow ® и MATLAB ®

Создание кода с фиксированной точкой в Simulink, Stateflow ® и MATLAB ®.

Создание целевых оптимизаций в рамках кода алгоритма

Настройка сгенерированного кода алгоритма с оптимизацией для конкретных целей.

Использовать выполнение ветви условного ввода

Для блоков Switch и Multiport Switch Simulink выполняет только те блоки, которые вычисляют управляющий вход и ввод данных, которые выбирает управляющий вход.

Оптимизация генерируемого кода для сложных сигналов

Генератор кода выполняет различные оптимизации структур, которые представляют сигналы в сгенерированном коде.

Ускорение линейной алгебры в коде, сгенерированном из функционального блока MATLAB

Создание вызовов LAPACK для определенных функций линейной алгебры в блоке функции MATLAB. Укажите библиотеку LAPACK для использования.

Ускорение операций матрицы в коде, сгенерированном из функционального блока MATLAB

Создание вызовов BLAS для определенных операций матрицы низкого уровня. Укажите библиотеку BLAS для использования.

Ускорение быстрых преобразований Фурье в коде, сгенерированном из функционального блока MATLAB

Создание вызовов библиотеки FFTW для быстрых преобразований Фурье в блоке функции MATLAB. Укажите библиотеку FFTW.

Синхронизация многопоточного планирования FFTW в коде, сгенерированном из функционального блока MATLAB

Реализуйте методы класса обратного вызова библиотеки FFT и предоставляйте поддерживающий код C для предотвращения параллельного доступа к планированию FFTW.

Управление распределением памяти для массивов переменного размера в функциональном блоке MATLAB

Отключите динамическое выделение памяти или укажите порог динамического выделения памяти для функциональных блоков MATLAB.

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

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

Для проверки скорости выполнения кода используйте профилирование выполнения кода.