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

Выберите блоки для Режима Accelerator

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

Примечание

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

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

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

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

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

  • Interpreted MATLAB Function

  • Драйвер устройства S-функции, такие как блоки из продукта Simulink Real-Time™ или те, которые нацелены на Freescale™ MPC555

Примечание

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

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

Примечание

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

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

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

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

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

Режим Rapid Accelerator будет использовать файл MEX, если файл C S-Function отсутствует в одной папке.

Примечание

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

Факторы о типах данных в режиме Accelerator и Rapid Accelerator

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

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

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

  • Быстрый Режим Accelerator поддерживает корневые входы типа Перечисленных данных

  • Быстрый Режим Accelerator не поддерживает данные с фиксированной точкой для блока From Workspace.

  • Быстрый Режим Accelerator игнорирует установка флажка Log fixed-point data as a fi object (FixptAsFi) для блока To Workspace.

  • Быстрый Режим Accelerator поддерживает объекты шины как параметры.

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

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

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

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

Поведение возможностей и средств просмотра с быстрым режимом Accelerator

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

Возможности или средства просмотраПрогон симуляции из менюПрогон симуляции из командной строки
Осциллограф SimulinkТакая же поддержка как и в режиме normal mode
  • Логгирование поддерживается

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

Сигнал Simulink средства просмотра возможностейГрафика обновляется, но логгирование не поддерживаетсяНе поддерживается
Другие возможности средства просмотра сигналовПоддержка ограничена доступной в режиме external modeНе поддерживается
Логгирование сигналовПоддерживается.Поддерживается.

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

(Например, Data Inspector или Logic Analyzer)

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

Примечание

Несмотря на то, что возможности и средства просмотра не обновляются, когда вы запускаете режим Rapid Accelerator из командной строки, они обновляются, когда вы запускаете модель из меню. Запуск Acceleration Mode из интерфейса пользователя показывает, как запустить режим Rapid Accelerator из меню. Взаимодействие с режимами ускорения Программно показывает, как запустить симуляцию из командной строки.

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

  • Вы не можете использовать режим Accelerator или Rapid Accelerator, если ваша модель:

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

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

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

    • Код TLC

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

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

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

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

    Примечание

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

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

  • Быстрый режим Accelerator не поддерживает:

    • Алгебраические циклы.

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

    • Interpreted MATLAB Function блоки.

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

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

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

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

    • boolean

    • uint8 или int8

    • uint16 или int16

    • uint32 или int32

    • single или double

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

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

  • Вы не можете приостановить симуляцию в режиме Rapid Accelerator.

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

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

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

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

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

  • Быстрый Режим Accelerator не поддерживает системы, которые запускают RHEL/CentOS 6.x или 7.x.

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

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

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

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

Похожие примеры

Подробнее о