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

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

Введение

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

Объект, рассчитывающий в видео

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

Подготовка Подсистемы Потока данных

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

Анализ параллелизма в подсистеме потока данных

Ассистент Симуляции Потока данных предлагает изменить настройки модели для оптимальной производительности симуляции. Чтобы принять предложенные настройки модели, рядом с настройками модели Suggested для производительности симуляции, нажмите кнопку Принять все. В качестве альтернативы можно расширить раздел, чтобы изменить настройки индивидуально. В этом примере настройки модели уже оптимальны. В Ассистенте Симуляции Потока данных нажмите кнопку Analyze, чтобы запустить анализ области потока данных для производительности симуляции. Если анализ закончен, Ассистент Симуляции Потока данных показывает, сколько потоков подсистема потока данных будет использовать в процессе моделирования.

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

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

Нажмите кнопку Accept рядом с Предложенной Задержкой в Ассистенте Симуляции Потока данных, чтобы использовать рекомендуемую задержку в Подсистеме Потока данных. Это значение может также быть введено непосредственно в Property Inspector для параметра "Задержки". Simulink показывает значение параметров задержки с помощью$Z^{-n}$ тегов в выходных портах подсистемы потока данных.

Ассистент Симуляции потока данных теперь показывает количество потоков как 2 подразумевать, что блоки в подсистеме потока данных симулируют в параллели с помощью 2 потоков.

Многожильная производительность симуляции

Мы измеряем повышение производительности использования области потока данных путем сравнения времени выполнения, потраченного для под управлением модели с и не используя поток данных. Время выполнения измеряется с помощью sim команды, которая возвращает время выполнения симуляции модели. При измерении времени выполнения блок Video Viewer прокомментирован, чтобы измерить время, потраченное, в основном, для Подсистемы Потока данных. Эти числа и анализ были опубликованы на рабочем компьютере Windows с Intel® Xeon® CPU W-2133 3.6 процессора GHz 6 Cores 12 Threads.

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

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

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