При реализации многоядерного программирования для вашего приложения в Simulink®Существует два способа разбиения вашей модели на разделы для выполнения на отдельных узлах обработки. Если вы новичок в многоядерном программировании в Simulink, используйте значение по умолчанию (неявное разбиение) для вашей первой итерации реализации многоядерного программирования.
Автоматизированный способ создания задач и сопоставления их с вашими узлами обработки называется implicit partitioning. Simulink разбивает вашу модель на основе шага расчета блоков на корневом уровне. Каждое шаг расчета в модели соответствует разделу, и все блоки одной скорости или шага расчета принадлежат одному разделу. Simulink сопоставляет эти разделы с задачами, выполняемыми на вашем процессоре. Неявное разбиение предполагает, что ваша архитектура является одним многоядерным центральным процессором. Планировщик задач центрального процессора обрабатывает все секционированные задачи.
Если вы хотите задать, как разбить модель, используйте explicit partitioning. При явном разбиении вы создаете разделы в модели корневого уровня с помощью ссылочных моделей, MATLAB® системные блоки, блоки MATLAB Function, Stateflow® графики и подсистемы Simulink. Для примера, если ваша модель имеет сбор данных и контроллер, разделите вашу модель, поместив эти компоненты в две модели-ссылки на уровне корня модели. Каждое шаг расчета блоков в модели соответствует разделу. Можно добавить задачи для выполнения на узлах обработки в диалоговом окне Параллельное выполнение и назначить разделы этим задачам. Если некоторые разделы не назначены, Simulink автоматически присваивает их задачам.
При явном разбиении можно задать собственную архитектуру. Архитектурой по умолчанию является многоядерный центральный процессор, такой же как и предполагаемая архитектура при неявном разбиении. Явное разбиение имеет больше ограничений на модель корневого уровня, чем неявное разбиение. Для получения дополнительной информации смотрите Ограничения с многоядерным программированием в Simulink.
Существует несколько способов разбить модель на разделы для параллельного выполнения в Simulink. Основанные на курсах и основанные на модели подходы дают вам в основном графические средства для представления параллелизма для систем, которые представлены с использованием блоков Simulink и Stateflow. Разделить код MATLAB можно с помощью блока MATLAB System и блока MATLAB Function. Можно также разбить модели физических систем с помощью мультисольверных методов.
Каждый метод имеет дополнительные факторы, чтобы помочь вам решить, что использовать.
Цель | Допустимые методы секционирования | Факторы |
---|---|---|
Увеличьте эффективность симуляции на хост-компьютер. | Нет метода разбиения | Simulink пытается оптимизировать хост-компьютер эффективности независимо от используемого метода моделирования. Дополнительные сведения о том, как Simulink помогает улучшить эффективность, см. в разделе Оптимизация эффективности. |
Увеличьте эффективность симуляции объекта в многоядерной системе HIL (оборудование в цикле). | Можно использовать любой из методов разбиения и их комбинаций. | Характеристики обработки системы HIL и встроенной системы обработки могут сильно различаться. Рассмотрите разбиение системы на больше модули работы, чем количество элементов обработки в HIL или встраиваемой системе. Эта конвенция обеспечивает гибкость в процессе отображения. |
Создайте допустимую модель многоядерной параллельной системы, чтобы использовать преимущества многоядерной системы обработки. | Можно использовать любой из методов разбиения и их комбинаций. | Разбиение может ввести задержки сигнала, чтобы представлять требования на передачу данных для параллельного выполнения. Дополнительные сведения см. в разделе Настройка параметров передачи данных между параллельными задачами. |
Создайте действительную модель гетерогенной системы, чтобы использовать преимущества многоядерной обработки и обработки FPGA. |
| Рассмотрите разбиение для обработки FPGA, где ваши расчеты имеют узкие места, которые могут быть уменьшены с помощью мелкозернистого аппаратного параллелизма. |