Спроектируйте свою модель для эффективного ускорения

Выберите блоки для Accelerator Mode

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

Примечание

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

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

Выберите Blocks for Rapid Accelerator Mode

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

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

  • Interpreted MATLAB Function

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

Примечание

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

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

Примечание

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

Встраивание S-функций с помощью Компилятора Выходного языка увеличивает эффективность с классическим Режимом Accelerator путем устранения ненужных вызовов Simulink API. По умолчанию, однако, классический Режим Accelerator игнорирует встраивание файл TLC для S-функции, даже при том, что файл существует. Быстрый Режим 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);
}

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

Примечание

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

Акселератор и быстрые факторы типа данных режима 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 и Быстрый Режим Accelerator хранят целые числа максимально сжато.

  • Fixed-Point Designer™ не собирает min, макс., или переполняет данных в Акселераторе или Быстрых Режимах Accelerator.

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

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

Поведение осциллографов и средств просмотра с быстрым режимом Accelerator

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

Осциллограф или тип средства просмотраСимуляция, запущенная в менюСимуляция, запущенная из командной строки
Блок Simulink ScopeТа же поддержка как Режим normal mode
  • Логгирование поддерживается

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

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

Visualizers с входными параметрами от логгирования

(Такие как Data Inspector или Logic Analyzer)

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

Примечание

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

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

  • Вы не можете использовать Акселератор или Быстрый Режим Accelerator если ваша модель:

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

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

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

    • Код TLC

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

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

    • Разработчик S-функции

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

    Примечание

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

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

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

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

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

    • Блоки Interpreted MATLAB Function.

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

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

    • Время выполнения возражает для блоков Simulink.BlockCompOutputPortData и Simulink.RunTimeBlock.

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

    • boolean

    • uint8 или int8

    • uint16 или int16

    • uint32 или int32

    • single или double

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Больше о