Присвоение задач к ядрам для многоядерного программирования

Этот пример показывает, как использовать в своих интересах выполнение кода на многоядерном процессоре графическим разделением. Этот пример требует, чтобы Simulink Coder™ сгенерировал многопоточный код.

Введение

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

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

Попробуйте пример

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

slexMulticoreExample

Сгенерируйте многопоточный код

Эта прикладная модель уже разделена в четыре параллельных задачи через диалоговое окно Параллельного выполнения, к которому можно получить доступ от панели Решателей Параметров конфигурации модели. Используйте это диалоговое окно, чтобы задать логику, задачу и базовые присвоения. В этом примере мы разделили прикладную логику как:

Дважды кликните на кнопке 'Generate Code and Profile Report', чтобы сгенерировать многопоточный код и профилировать его выполнение. Это действие запускает и инструменты сгенерированный исполняемый файл и приводит и к профильным результатам и к базовой карте заполнения, последний, проиллюстрированный ниже. Рисунок показывает, как ядра использовались на каждом временном шаге выполнения. В этом примере первое ядро использовалось для высоких скоростей (Task1 и Task2), и второе ядро использовалось для более медленных уровней (Task3 и Task4).

Можно вернуться к диалоговому окну Параллельного выполнения, чтобы испытать различные базовые присвоения. В частности, можно попытаться не задать базовое сродство путем отъезда свойства 'Affinity' как' []'. Это - настройка по умолчанию, которая позволяет Simulink™ генерировать многопоточный код, подходящий для динамического планирования на ваш многоядерный процессор.