Выполните многожильный анализ для потока данных

Когда подсистема в модели сконфигурирована, чтобы использовать область выполнения потока данных, вкладка Multicore активируется на панели инструментов Simulink®. Эта вкладка консолидирует многожильные аналитические методы, усиленные в потоке данных в инкрементный и итеративный рабочий процесс.

Используя средства управления на вкладке Multicore, вы можете:

  • Оцените относительную стоимость блоков с помощью внутренней эвристики Simulink.

  • Измерьте средние времена выполнения (стоимость) блоков в подсистемах потока данных путем симуляции модели с программным обеспечением в цикле (SIL) или процессоре в цикле (PIL) профилирование. Эта функциональность требует лицензии Embedded Coder®.

  • Вручную замените величину затрат блока.

  • Обеспечьте аналитические ограничения, такие как максимальное количество порога поточной обработки и потоков.

  • Запустите анализ, чтобы сгенерировать блок к выделению потоков и визуализировать результаты анализа.

Multicore tab

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

Multicore analysis workflow

Выберите метод расчета стоимости

На вкладке Multicore, в разделе Mode, можно выбрать метод расчета стоимости как Cost Estimation или SIL/PIL Profiling. В обоих режимах стоимость отдельных блоков будет автоматически определяться и использоваться в многожильном анализе для того, чтобы одинаково распределить вычислительную загрузку на нескольких ядрах процессора.

Cost estimation in the toolstrip

Стойте оценки

Используйте Cost Estimation для:

  • Быстрый анализ, не запуская симуляцию или генерируя код.

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

Когда вы нажимаете Estimate Cost, Редактор Стоимости отображает предполагаемую стоимость выполнения каждого блока в вашей модели, не симулируя его.

Cost Editor window

Профилирование SIL/PIL

Используйте программное обеспечение в цикле (SIL), или процессор в цикле (PIL) профильный метод (требует лицензии Embedded Coder) к:

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

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

SIL/PIL профильные средние времена выполнения мер (стоимость) блоков в подсистемах потока данных путем симуляции модели с SIL/PIL.

SIL and PIL profiling settings in the toolstrip

  • Используйте Settings, чтобы сконфигурировать генерацию кода C/C++ и настройки аппаратной реализации.

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

  • Используйте выпадающее меню, чтобы выбрать software-in-the-Loop (SIL) or processor-in-the-loop (PIL) установка.

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

Этот пример показывает подсвеченный блок в модели и ее стоимости.

Results from SIL/PIL profiling

Вручную измените затраты блока

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

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

Cost column

Задайте аналитические ограничения и запущенный анализ

Затем установите ограничения и запустите многожильный анализ. В разделе Analyze:

Number of cores and multithreading threshold

  • Используйте Maximum Number of Threads, чтобы задать максимальное количество потоков, произведенных анализом. По умолчанию инструмент пытается автоматически определить количество ядер целевого процессора от аппаратных настроек и использования что как максимальное количество потоков. Если инструмент будет не мочь определить точное значение, он будет использовать количество ядер на серверной платформе как максимальное количество потоков.

  • Задайте Multithreading Threshold, чтобы установить минимум для общей стоимости (в микросекундах) подсистемы, для которой инструмент применяет многопоточность. Если общая стоимость упадет ниже порога, инструмент не разделит подсистему. По умолчанию инструмент использует номинальную стоимость, 25 микро - секунды, как порог.

  • Нажмите Run Analysis, чтобы выполнить анализ на основе вашей настройки.

Рассмотрите результаты

Используйте инструменты, обеспеченные в разделе Review Results, чтобы визуализировать и изучить многожильное поведение вашей модели.

Tools to review results

Подсветите и просмотрите потоки

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

Thread highlighting

Выберите Thread Viewer, чтобы визуализировать выделение блоков к потокам.

Allocation of the blocks to threads

Используйте конвейеризацию, чтобы увеличить параллелизм

Выберите Suggestions For Increasing Concurrency, чтобы видеть, предлагаются ли там задержки для конвейеризации задержек. Путем конвейеризации информационно-зависимых блоков блок Subsystem Потока данных может увеличить параллелизм для более высокой пропускной способности. Для получения дополнительной информации о конвейеризации задержек, смотрите Многожильную Симуляцию и Генерацию кода Областей Потока данных.

Suggested latency

После принятия предложенных задержек для конвейеризации задерживаются, можно использовать Show pipeline delays, чтобы визуализировать задержки модели.

Pipeline delays in the model

Ускорение выполнения

Используйте Execution Speed, чтобы указать на максимальное теоретическое ускорение для целой модели. Это ускорение может быть достигнуто в результате разделения, выполняемого во время анализа.

Theoretical speedup chart

Ускорение вычисляется с помощью этой формулы, где n общее количество блоков Dataflow Subsystem, pctPar процент параллельного выполнения подсистемы и criticalPathCost стоимость самого дорогостоящего потока в подсистеме.

Speedup1(1i=0npctPari)+i=0npctPari×criticalPathCostitotalCostInSubsystemi

Смотрите также

Похожие темы