В этом примере показано, как запустить систему обработки видео на нескольких ядрах, используя домен выполнения потока данных в Simulink ®.
Область выполнения Dataflow позволяет использовать несколько ядер при проектировании ресурсоемких систем. В этом примере показано, как поток данных как область выполнения подсистемы повышает производительность моделирования модели. Дополнительные сведения о потоке данных и о том, как запускать модели Simulink с использованием нескольких потоков, см. в разделе Многоядерное выполнение с использованием домена потока данных (DSP System Toolbox).
В этом примере показано, как использовать базовые морфологические операторы для извлечения информации из видеопотока. В этом случае модель подсчитывает количество скобок в каждом видеокадре. Модель использует блок Top-hat для удаления неравномерного освещения, а затем блок Autotheshold для преобразования его в двоичное изображение. Затем блок анализа больших двоичных объектов используется для подсчета количества скобок и вычисления центроида каждой скобки. Маркеры Draw и блок вставки текста используются для маркировки скобок и записи количества скобок, найденных на видеокадре.

В этом примере используется домен потока данных в Simulink для использования нескольких ядер на рабочем столе для повышения производительности моделирования. Параметр Domain подсистемы потока данных в этой модели имеет значение Dataflow. Для этого выберите подсистему, а затем выберите «Вид» > «Инспектор свойств». Домены потока данных автоматически секционируют модель и моделируют систему с использованием нескольких потоков для повышения производительности моделирования. Установив для параметра Domain значение Dataflow, можно использовать Data aflow Simulation Assistant для анализа модели с целью повышения производительности. Можно открыть ассистент моделирования потока данных, нажав кнопку «Ассистент потока данных» под параметром автоматического расчета размера кадра в Инспекторе свойств.


Помощник по моделированию потока данных предлагает изменить параметры модели для обеспечения оптимальной производительности моделирования. Чтобы принять предложенные параметры модели, рядом с пунктом Предлагаемые параметры модели для производительности моделирования щелкните Принять все (Accept all). Можно также развернуть раздел, чтобы изменить настройки по отдельности. В этом примере настройки модели уже оптимальны. В ассистенте моделирования потока данных нажмите кнопку «Анализ», чтобы начать анализ области потока данных для обеспечения производительности моделирования. По завершении анализа ассистент моделирования потока данных показывает, сколько потоков подсистема потока данных будет использовать во время моделирования.
После анализа модели ассистент показывает один поток, поскольку зависимость данных между блоками в модели предотвращает одновременное выполнение блоков. Конвейерная обработка зависимых от данных блоков позволяет подсистеме потока данных увеличить параллелизм для более высокой пропускной способности. Помощник по моделированию потока данных показывает рекомендуемое количество задержек конвейера как предполагаемую задержку. Предлагаемое значение задержки вычисляется, чтобы обеспечить наилучшую производительность.
На следующей схеме показан ассистент моделирования потока данных, в котором подсистема потока данных в настоящее время задает нулевое значение задержки, а предложенная задержка для системы равна двум.

Нажмите кнопку «Принять» рядом с пунктом «Рекомендуемая задержка» в ассистенте моделирования потока данных, чтобы использовать рекомендуемую задержку для подсистемы потока данных. Это значение также можно ввести непосредственно в инспекторе свойств для параметра «Задержка». Simulink показывает значение параметра задержки с помощью
тегов на выходных портах подсистемы потока данных.
Помощник по моделированию потока данных теперь показывает количество потоков как 2, что означает, что блоки внутри подсистемы потока данных моделируются параллельно с использованием 2 потоков.

Мы измеряем повышение производительности использования домена потока данных, сравнивая время выполнения для выполнения модели с использованием потока данных и без него. Время выполнения измеряется с помощью команды sim, которая возвращает время выполнения моделирования модели. При измерении времени выполнения блок Video Viewer комментируется, чтобы измерить время, затраченное в первую очередь на подсистему потока данных. Эти цифры и результаты анализа были опубликованы на настольном компьютере под управлением ОС Windows с процессором Intel ® Xeon ® W-2133 @ 3,6 ГГц 6 ядрами 12 Threads.
Simulation execution time for multithreaded model = 8.31s Simulation execution time for single-threaded model = 12.68s Actual speedup with dataflow: 1.5x
В этом примере показано, как многопоточность с использованием домена потока данных может повысить производительность в модели обработки видео с использованием нескольких ядер на рабочем столе.