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

В этом примере показано, как запустить систему обработки видео на нескольких ядрах, используя область выполнения dataflow в Simulink ®.

Введение

Область выполнения Dataflow позволяет вам использовать несколько ядер при проекте вычислительно интенсивных систем. Этот пример показывает, как dataflow как область выполнения подсистемы улучшает эффективность симуляции модели. Чтобы узнать больше о dataflow и о том, как запустить модели Simulink с помощью нескольких потоков, смотрите Многоядерное Выполнение с использованием Область (DSP System Toolbox).

Подсчет объектов в видео

В этом примере показано, как использовать морфологические операторы для извлечения информации из видеопотока. В этом случае модель подсчитывает количество скобок в каждом видеокадре. Модель использует блок Top-hat, чтобы удалить неравномерное освещение, а затем блок Autothreshold, чтобы преобразовать его в бинарное изображение. Блок Blob-анализа затем используется, чтобы подсчитать количество скобок и вычислить центроид каждого штапеля. Маркеры Draw и текстовый блок insert используются для маркировки скобок и записи количества скобок, найденных в видеокадре.

Настройка подсистемы Dataflow

Этот пример использует область dataflow в Simulink, чтобы использовать несколько ядер на рабочем столе для повышения эффективности симуляции. Параметр Domain Подсистемы Dataflow в этой модели задан как Dataflow. Вы можете просмотреть это, выбрав подсистему и затем выбрав View > Property Inspector. Области Dataflow автоматически разделяют вашу модель и моделируют систему с помощью нескольких потоков для повышения эффективности симуляции. Если вы установите параметр Domain на Dataflow, можно использовать Dataflow Simulation Assistant, чтобы проанализировать модель, чтобы получить лучшую эффективность. Можно открыть Dataflow Simulation Assistant, нажав на кнопку Dataflow assistant под параметром Автоматическое вычисление формата кадра в Property Inspector.

Анализ параллелизма в подсистеме Dataflow

Помощник по симуляции Dataflow предлагает изменение настроек модели для оптимальной эффективности симуляции. Чтобы принять предложенные настройки модели, рядом с параметрами Предлагаемой модели для эффективности симуляции, нажмите Принять все. Также можно развернуть раздел, чтобы изменить настройки по отдельности. В этом примере настройки модели уже оптимальны. В Dataflow Simulation Assistant нажмите кнопку Analyze, чтобы начать анализ области dataflow для эффективности симуляции. После завершения анализа помощник по симуляции Dataflow показывает, сколько потоков будет использовать подсистема dataflow во время симуляции.

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

Следующая схема показывает Dataflow Симуляции Assistant, где Подсистема Dataflow в настоящее время задает значение задержки нуля, и предлагаемая задержка для системы равна двум.

Чтобы использовать рекомендуемую задержку для подсистемы Dataflow, нажмите кнопку «Принять» рядом с полем «Предлагаемая задержка» в ассистенте симуляции Dataflow. Это значение можно также ввести непосредственно в Property Inspector для параметра «Latency». Simulink показывает значение параметров задержки, используя$Z^{-n}$ теги в выходных портах подсистемы dataflow.

Dataflow Simulation Assistant теперь показывает количество потоков как 2, что означает, что блоки внутри подсистемы dataflow моделируются параллельно с использованием 2 потоков.

Многоядерная Эффективность симуляции

Мы измеряем улучшение эффективности использования области dataflow путем сравнения времени выполнения, требуемого для выполнения модели с и без использования dataflow. Время выполнения измеряется с помощью команды sim, которая возвращает время выполнения симуляции модели. При измерении времени выполнения блок Video Viewer комментируется, чтобы измерить время, требуемое в основном для Подсистемы Dataflow. Эти цифры и анализ были опубликованы на рабочем компьютере Windows с процессором Intel ® Xeon ® CPU W-2133 @ 3,6 ГГц 6 ядер 12 потоков.

Simulation execution time for multithreaded model = 8.31s
Simulation execution time for single-threaded model = 12.68s
Actual speedup with dataflow: 1.5x

Сводные данные

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