Используя процесс секционирования, отображения и профилирования в Simulink ®, можно решить общие проблемы проектирования систем для параллельного выполнения.
Секционирование позволяет обозначать области модели как задачи, не зависящие от сведений о встроенном оборудовании многоядерной обработки. Эта независимость позволяет упорядочить содержимое и иерархию модели в соответствии с требованиями приложения.
В секционированной системе отображение позволяет назначать секции элементам обработки во встроенной системе обработки. Используйте инструмент сопоставления Simulink для представления и управления подробностями выполнения потоков, кодом HDL на FPGA и работой, выполняемой этими потоками или FPGA. При создании модели не требуется отслеживать разделы или передачу данных между ними, поскольку инструмент выполняет эту работу. Кроме того, модель можно повторно использовать в нескольких архитектурах.
Профилирование моделирует развертывание приложения при типичных вычислительных нагрузках. Она позволяет определить секционирование и сопоставление модели, что обеспечивает наилучшую производительность перед развертыванием на оборудовании.
Развертывание модели в целевом объекте.
Настройте модель для параллельного выполнения.
Дополнительные сведения о настройке модели для параллельного выполнения см. в разделе Настройка модели для параллельного выполнения. С помощью этих настроек Simulink секционирует модель на основе времени выборки блоков на корневом уровне, причем каждое время выборки в модели соответствует разделу, и все блоки одной скорости или времени выборки, принадлежащие одному разделу.
Если необходимо указать способ секционирования модели, используйте явное секционирование. При явном разбиении необходимо указать целевую архитектуру, а затем явно разбиение модели. Дополнительные сведения см. в разделах Указание целевой архитектуры и Разделение модели с помощью явного разбиения.
Создайте код и разверните его на целевом объекте. Можно выбрать развертывание на нескольких конечных объектах.
Сведения о сборке и развертывании на цели рабочего стола см. в разделе Сборка на рабочем столе.
Сведения о развертывании на встраиваемых объектах с помощью Embedded Coder ® см. в разделе Развертывание (Embedded Coder).
Сведения о построении и развертывании на целевом объекте в реальном времени с помощью Simulink Real-Time™ см. в разделе Автономная работа (Simulink Real-Time).
Сведения о развертывании на FPGA с использованием Coder™ HDL см. в разделе Развертывание (кодер HDL).
Примечание
Развертывание на FPGA поддерживается только для явно секционированных моделей.
Оптимизируйте дизайн. Этот шаг является необязательным и включает итерацию над конструкцией модели и сопоставление, чтобы получить наилучшую производительность на основе метрик. Один из способов оценки модели - профилировать ее и получить время выполнения.
| Продукт | Информация |
|---|---|
| Цель рабочего стола | Профилирование и оценка явно секционированных моделей на рабочем столе |
| Симулинк в реальном времени | |
| Встроенный кодер | Профилирование выполнения кода (встроенный кодер) |
| Кодер HDL | Оптимизация скорости и площади (кодер HDL) |
Ручное программирование приложения для параллельного выполнения создает проблемы, выходящие за рамки типичных задач при ручном кодировании. Simulink позволяет преодолеть проблемы переносимости в нескольких архитектурах, эффективности развертывания для архитектуры и циклических зависимостей данных между компонентами приложений. Дополнительные сведения об этих проблемах см. в разделе Проблемы многоядерного программирования.
Simulink позволяет определять содержание и иерархические потребности смоделированной системы без учета целевой системы. При создании содержимого модели нет необходимости отслеживать количество ядер в целевой системе. Вместо этого выбираются методы секционирования, позволяющие создавать содержимое модели. Simulink генерирует код для указанной архитектуры.
Можно выбрать архитектуру из доступных поддерживаемых архитектур или добавить пользовательскую архитектуру. При изменении архитектуры Simulink генерирует только код, который необходимо изменить для второй архитектуры. В новой архитектуре повторно используются блоки и функции. Дополнительные сведения см. в разделах Поддерживаемые целевые объекты для многоядерного программирования и Указание целевой архитектуры.
Чтобы повысить производительность развернутого приложения, Simulink позволяет моделировать его при типичных вычислительных нагрузках и попробовать несколько конфигураций секционирования и отображения приложения. Simulink сравнивает производительность каждой из этих конфигураций, чтобы обеспечить оптимальную конфигурацию для развертывания. Это называется профилированием. Профилирование помогает определить оптимальную конфигурацию разделов перед развертыванием системы на требуемом оборудовании.
Для приложения можно создать сопоставление, в котором Simulink сопоставляет компоненты приложения между различными узлами обработки. Компоненты можно также присвоить узлам обработки вручную. Для любого сопоставления можно просмотреть зависимости данных между компонентами и соответствующим образом выполнить повторную привязку. Можно также ввести и удалить зависимости данных между различными компонентами.
Некоторые задачи системы зависят от вывода других задач. Зависимость данных между задачами определяет порядок их обработки. Два или более разделов, содержащих зависимости данных в цикле, создают цикл зависимости данных, также известный как алгебраический цикл. Simulink не позволяет алгебраическим циклам происходить через потенциально параллельные разбиения из-за высокой стоимости решения цикла с помощью параллельных алгоритмов.
В некоторых случаях алгебраическая петля является искусственной. Например, можно создать искусственный алгебраический цикл из-за секционирования на основе блоков модели. Алгебраический цикл, включающий блоки модели, является искусственным, если исключение использования разбиения модели исключает цикл. Можно минимизировать появление искусственных контуров. В диалоговых окнах Параметр конфигурации (Configuration Parameter) для моделей, участвующих в алгебраическом цикле, выберите Модель (Model) Привязка (Referencing) > Минимизировать вхождения алгебраического цикла (Minimize algebric loop occurrences).
Кроме того, если модель настроена для общего целевого объекта в реальном времени (grt.tlc) или целевой объект Embedded Real-Time (ert.tlc) в диалоговом окне Configuration Parameters снимите флажок Single output/update function.
Если алгебраический цикл является истинным алгебраическим условием, необходимо либо содержать все блоки в цикле в одном разделе модели, либо устранить цикл, введя элемент задержки в цикл.
В следующих примерах показано, как реализовать различные типы параллелизма в Simulink. Эти примеры содержат модели, которые секционированы и сопоставлены с простой архитектурой с одним CPU и одним FPGA.