文档

为多核编程分配任务

这个例子展示了如何通过图形化分区在多核处理器上执行代码。这个例子需要Simulink Coder™来万博1manbetx生成多线程代码。

简介

多核编程允许您利用现代多核处理器的处理能力来创建高性能应用程序。万博1manbetxSimulink™允许您利用多核编程,允许您以图形化的方式对算法进行分区,并将从这些分区生成的代码分配给多核处理器上的并行线程。

并行线程通常由操作系统调度,动态地将线程分配给核心。这允许调度器在提供公平概念的同时充分利用内核。然而,在许多应用程序中,您可能需要对如何使用核心进行额外的控制,或者您可能希望将一组核心专门用于特定的逻辑,例如提高确定性。这种级别的控制可以通过图形化分区实现,本例对此进行了说明。

试试例子

多核的典型情况包括多速率模型,您希望将快速率的代码分配给一个核心,将慢速率的代码分配给其他核心。这可能允许您为这些更快的速率添加更多的逻辑,或者实现更多的确定性。一般来说,您可能希望将核心专用于对资源需求最大的应用程序逻辑。首先,打开多核项目:

slexMulticoreExample

生成多线程代码

这个应用程序模型已经通过并发执行对话框划分为四个并发任务,您可以从模型的Configuration Parameters的Solvers窗格中访问该对话框。使用此对话框指定逻辑、任务和核心分配。在这个例子中,我们将应用程序逻辑划分为:

双击“Generate Code and Profile Report”按钮,生成多线程代码,并分析其执行情况。此操作运行和检测生成的可执行文件,并生成分析结果和核心占用映射,后者如下所示。该图显示了如何在执行的每个时间步骤中利用这些核心。在本例中,第一个核心用于快速速率(Task1和Task2),第二个核心用于较慢的速率(Task3和Task4)。

您可以返回并发执行对话框来尝试不同的核心分配。特别地,您可以尝试通过将' affinity '属性保留为'[]'来指定没有核心亲和力。这是默认设置,允许Simulink™生成适合多核处理器上动态调度的多线程代码。万博1manbetx

这个话题有用吗?