exponenta event banner

Разработка модели для эффективного ускорения

Выбор блоков для режима ускорителя

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

Примечание

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

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

Выбор блоков для режима быстрого ускорения

Блоки, не поддерживающие генерацию кода (например, SimEvents ®), или блоки, генерирующие код только для определенного целевого объекта, не могут быть смоделированы в режиме быстрого ускорения.

Кроме того, режим ускорителя Rapid не работает, если модель содержит один из следующих блоков:

Примечание

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

Управление выполнением S-функции

Примечание

В режиме JIT Accelerator по умолчанию встраивание написанных пользователем функций TLC S не поддерживается. При запуске модели, содержащей S-функции TLC в режиме JIT Accelerator, существует вероятность снижения скорости выполнения. Скорость генерации кода, однако, будет высокой из-за ускорения JIT.

Встраивание S-функций с помощью компилятора целевого языка повышает производительность в классическом режиме Accelerator, устраняя ненужные вызовы API Simulink. Однако по умолчанию классический режим ускорителя игнорирует встроенный файл TLC для S-функции, даже если файл существует. В режиме ускорителя Rapid всегда используется файл TLC, если он доступен.

Блок S-Function драйвера устройства, записанный для доступа к определенным аппаратным регистрам на плате ввода/вывода, является одним из примеров того, почему это поведение было выбрано по умолчанию. Поскольку программное обеспечение Simulink работает в хост-системе, а не в целевой системе, оно не может получить доступ к целевым регистрам ввода-вывода и, следовательно, не сможет это сделать.

Чтобы настроить классический режим Accelerator на использование TLC-файла вместо S-функции MEX-файла, укажите SS_OPTION_USE_TLC_WITH_ACCELERATOR в mdlInitializeSizes функции S-функции, как в этом примере:

static void mdlInitializeSizes(SimStruct *S)
{
/* Code deleted */
ssSetOptions(S, SS_OPTION_USE_TLC_WITH_ACCELERATOR);
}

В режиме ускорителя Rapid используется файл MEX, если файл C S-функции отсутствует в той же папке.

Примечание

чтобы использовать код .c или .cpp для S-функции, убедитесь, что они находятся в той же папке, что и S-Function MEX-файл, в противном случае можно включить дополнительные файлы в S-функцию или обойти ограничение пути с помощью файла rtwmakecfg.m. Дополнительные сведения см. в разделе Использование API rtwmakecfg.m для настройки созданных Makefiles (Simulink Coder).

Рекомендации по типу данных Accelerator и Rapid Accelerator Mode

  • Режим ускорителя поддерживает сигналы с фиксированной точкой и векторы до 128 бит.

  • Режим Rapid Accelerator поддерживает параметры с фиксированной точкой до 128 бит.

  • Режим Rapid Accelerator поддерживает корневой вход с фиксированной точкой до 32 бит

  • Режим быстрого ускорения поддерживает корневые входы типа данных Enumerated

  • Режим быстрого ускорения не поддерживает данные с фиксированной точкой для блока «Из рабочей области».

  • Режим быстрого ускорения игнорирует выбор флажка «Вести журнал данных с фиксированной точкой» в качестве объекта fi (FixptAsFi) для блока «В рабочую область».

  • Режим быстрого ускорения поддерживает объекты шины в качестве параметров.

  • Режим Accelerator и режим Rapid Accelerator хранят целые числа максимально компактно.

  • Designer™ Fixed-Point не собирает данные min, max или overflow в режимах Accelerator или Rapid Accelerator.

  • Режим Accelerator поддерживает ограниченный набор диагностики во время выполнения, включая блок утверждения.

  • Режим Rapid Accelerator поддерживает ограниченный набор диагностики во время выполнения, включая блок утверждения.

Поведение областей и объектов просмотра в режиме быстрого ускорения

Выполнение моделирования из командной строки или меню определяет поведение областей и средств просмотра в режиме ускорителя.

Тип области или средства просмотраЗапуск моделирования из менюЗапуск моделирования из командной строки
Блок области SimulinkТа же поддержка, что и в обычном режиме
  • Ведение журнала поддерживается

  • Окно области не обновляется

Области просмотра сигналов SimulinkГрафика обновляется, но ведение журнала не поддерживаетсяНе поддерживается
Другие области просмотра сигналовПоддержка ограничена поддержкой, доступной во внешнем режимеНе поддерживается
Регистрация сигналовПоддерживается.Поддерживается.

Визуализаторы с входами от регистрации

(например, инспектор данных или анализатор логики)

Данные не визуализируются во время моделирования.Данные не визуализируются во время моделирования.
Блоки диаграммы Stateflow ®Та же поддержка анимации диаграммы, что и в обычном режимеНе поддерживается

Примечание

Хотя области и средства просмотра не обновляются при запуске режима ускорителя быстрого вызова из командной строки, они обновляются при запуске модели из меню. Команда Запустить режим ускорения из интерфейса пользователя показывает, как запустить режим быстрого ускорения из меню. Взаимодействие с режимами ускорения Программно показывает, как выполнять моделирование из командной строки.

Факторы, препятствующие ускорению

  • Режим Ускоритель (Accelerator) или Ускоритель (Rapid) нельзя использовать, если модель:

    • Передает параметры массива в MATLAB ® S-функции, которые не являются числовыми, логическими или символьными массивами, являются разреженными массивами или имеют более двух измерений.

    • Использует блоки Fcn, содержащие тригонометрические функции со сложными входами.

  • В некоторых случаях изменения, связанные с внешним или пользовательским кодом, не приводят к изменению результатов моделирования Accelerator или Rapid Accelerator. К ним относятся:

    • Код TLC

    • Исходный код S-функции, включая файлы rtwmakecfg.m

    • Интегрированный пользовательский код

    • Построитель S-функций

    В таких случаях рассмотрим принудительную регенерацию кода для верхней модели. Кроме того, можно принудительно выполнить регенерацию кода модели верхнего уровня, удалив папки генерации кода, например slprj или созданную папку кода модели.

    Примечание

    При ускорении JIT целевой код ускорения находится в памяти. Поэтому он доступен для повторного использования, пока модель открыта, даже если удалить slprj папка.

Ограничения режима быстрого ускорения

  • Режим быстрого ускорения не поддерживает:

    • Алгебраические петли.

    • Цели записаны на языке C++.

    • Интерпретированные функциональные блоки MATLAB.

    • Неинлинговый язык MATLAB или S-функции Fortran. Необходимо записать S-функции на языке C или встроить их с помощью компилятора целевого языка (TLC), либо можно также использовать файл MEX. Дополнительные сведения см. в разделе Запись полностью встроенных S-функций (Simulink Coder).

    • Отладчик или профилировщик.

    • Объекты времени выполнения для блоков Simulink.RunTimeBlock и Simulink.BlockCompOutputPortData.

  • Параметры модели должны быть одного из следующих типов данных:

    • boolean

    • uint8 или int8

    • uint16 или int16

    • uint32 или int32

    • single или double

    • Фиксированная точка

    • Перечисленный

  • Нельзя приостановить моделирование в режиме быстрого ускорения.

  • Если сборка Rapid Accelerator включает ссылочные модели (с помощью блоков модели), настройте эти модели, чтобы использовать решатели с фиксированным шагом для создания кода для них. Верхняя модель, однако, может использовать решатель с переменным шагом, если блоки в ссылочных моделях являются дискретными.

  • В некоторых случаях изменение параметров блока может привести к структурным изменениям модели, которые изменят контрольную сумму модели. Примером такого изменения является изменение количества задержек при моделировании DSP. В этих случаях необходимо повторно создать код для модели. Дополнительные сведения см. в разделе Регенерация кода в ускоренных моделях.

  • Для корневых входов режим Rapid Accelerator поддерживает только базовый Srcworkspace.

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

  • В режиме быстрого ускорения блоки В файл (To File) или В рабочую область (To Workspace) внутри подсистем вызова функций не генерируют файлы регистрации, если порт вызова функции подключен к земле или не подключен.

  • Режим Rapid Accelerator не поддерживает системы под управлением RHEL/CentOS 6.x или 7.x.

Зарезервированные ключевые слова

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

Ключевые слова, зарезервированные для продукта Simulink Coder, перечислены в разделе Создание сгенерированных идентификаторов (Simulink Coder). Дополнительные ключевые слова, которые применяются только к режимам ускорителя и ускорителя Rapid:

muDoubleScalarAbs muDoubleScalarCosmuDoubleScalarMod
muDoubleScalarAcos muDoubleScalarCoshmuDoubleScalarPower
muDoubleScalarAcoshmuDoubleScalarExpmuDoubleScalarRound
muDoubleScalarAsinmuDoubleScalarFloormuDoubleScalarSign
muDoubleScalarAsinh muDoubleScalarHypotmuDoubleScalarSin
muDouureScalarAtan,muDoubleScalarLogmuDoubleScalarSinh
muDoubleScalarAtan2muDoubleScalarLog10muDoubleScalarSqrt
muDoubleScalarAtanhmuDoubleScalarMaxmuDoubleScalarTan
muDoubleScalarCeil muDoubleScalarMin muDoubleScalarTanh

Связанные примеры

Подробнее