exponenta event banner

Неявное и явное разбиение моделей

При внедрении многоядерного программирования для приложения в Simulink ® существует два способа разделения модели на отдельные узлы обработки. Если вы новичок в многоядерном программировании в Simulink, используйте значение по умолчанию (неявное разбиение) для первой итерации реализации многоядерного программирования.

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

Если необходимо указать способ секционирования модели, используйте явное секционирование. При явном секционировании разделы в модели корневого уровня создаются с помощью ссылочных моделей, системных блоков MATLAB ®, функциональных блоков MATLAB, диаграмм Stateflow ® и подсистем Simulink. Например, если модель имеет сбор данных и контроллер, разделите модель, поместив эти компоненты в две ссылочные модели на корневом уровне модели. Каждое время выборки блоков в модели соответствует разделу. Можно добавить задачи для выполнения на обрабатывающих узлах в диалоговом окне Параллельное выполнение и назначить этим задачам разделы. Если некоторые разделы остаются неназначенными, Simulink автоматически назначает их задачам.

В явном разбиении можно указать собственную архитектуру. Архитектура по умолчанию - это многоядерный ЦП, такой же, как и предполагаемая архитектура в неявном разбиении. Явное разбиение имеет больше ограничений для модели корневого уровня, чем неявное разбиение. Дополнительные сведения см. в разделе Ограничения при многоядерном программировании в Simulink.

Рекомендации по секционированию

Существует несколько способов секционирования модели для параллельного выполнения в Simulink. Подходы на основе скорости и модели дают в основном графические средства представления параллелизма для систем, представленных с помощью блоков Simulink и Stateflow. Код MATLAB можно разделить с помощью системного блока MATLAB и функционального блока MATLAB. Можно также секционировать модели физических систем с помощью методов мультисолвера.

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

ЦельДопустимые методы секционированияСоображения

Повышение производительности моделирования на хост-компьютере.

Нет метода секционирования

Simulink пытается оптимизировать производительность главного компьютера независимо от используемого метода моделирования. Дополнительные сведения о том, как Simulink помогает повысить производительность, см. в разделе Оптимизация производительности.

Повышение производительности моделирования установки в многоядерной системе HIL (hardware-in-the-loop).

Можно использовать любой из методов секционирования и их комбинации.

Характеристики обработки системы HIL и встроенной системы обработки могут сильно различаться. Рассмотрите возможность разделения системы на большее количество единиц работы, чем количество элементов обработки в HIL или встроенной системе. Это соглашение обеспечивает гибкость процесса мэппинга.

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

Можно использовать любой из методов секционирования и их комбинации.

Разделение может вводить задержки сигнала для представления требований к передаче данных для параллельного выполнения. Дополнительные сведения см. в разделе Настройка параметров передачи данных между параллельными задачами.

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

  • Многоядерная обработка: используйте любой из методов секционирования.

  • Обработка FPGA: разбиение модели на разделы с использованием блоков модели.

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

Связанные примеры

Подробнее