主要内容

在树莓派上实现CPU核亲和性的多核编程

这个例子展示了如何使用Simulink®支持包为树莓派硬件模型显式分区来创建原子子系统,并在多核树莓派处理器上并金宝app发执行任务。金宝app

简介

多核编程可以帮助您提高已部署应用程序的性能,允许您在典型计算负载下进行模拟,并尝试对应用程序进行分区和映射的多种配置。

在本例中,将树莓派Simulink模型配置为多核执行。金宝app这个例子还展示了如何在单核树莓派处理器上执行相同的Simulink模型,并比较单核和多核执行的结果。金宝app

先决条件

我们建议您完成树莓派硬件的Simulink支持包入门金宝app金宝app的例子。

树莓派多核项目文件夹

此支持包具金宝app有预配置的多核项目。

1.若要打开此文件夹,请选择金宝appSimulink开始页面>金宝app树莓派硬金宝app件的Simulink支持包>树莓派多核

2.在创建项目对话框中,输入项目名称并选择保存项目的文件夹位置。

3.点击好吧

4.警告信息,项目文件夹不存在。你想创建它吗?,显示。点击是的.打开项目文件夹。

模型文件夹中包含两个树莓派Simulink模型。金宝app

  • 树莓派多核音频

  • 树莓派多核简单

这个例子展示了树莓派在raspberrypi_multicore_simple Simulink模型下并发任务的多核执行。金宝app

要打开模型,双击raspberrypi_multicore_simple模型。

树莓派多核简单模型

这个Sim金宝appulink模型有三个方面,输入函数,输出

1.输入区

该区域由一个计数器组成,计数器的上限为10,以及一个随机数生成器。的样品时间“计数器”和“随机数产生器”块上的参数设置为0.5秒。

2.功能区域

计数器和随机数生成器输出相乘,结果输出与中提供的值进行比较阈值块。的阈值值设置为7

3.输出面积

属性中设置的值阈值block时,树莓派单板上配置的LED将点亮。

树莓派CPU的单核运行模型

1.打开raspberrypi_multicore_simple Simulin金宝appk模型。

2.在硬件选项卡中的Simuli金宝appnk模型模式部分中,选择在船上跑然后点击构建、部署和启动

3.要打开树莓派的SSH连接,请在MATLAB®命令窗口中执行以下命令:

r=raspberrypi('<树莓派IP地址>','<树莓派用户名>','<树莓派密码>')

r.openShell

4.如果需要查看树莓派内核的负载情况,请在树莓派Shell上执行此命令。

htop

观察一下,只有一个CPU被用来执行模型,而且平均核心负载很高。

配置Simulink金宝app并发执行模型并指定目标架构

您可以配置Simulink模型以利用并发执行金宝app。在为并发执行配置模型之后,您可以选择要部署到您的模型的体系结构。

  1. 打开raspberrypi_multicore_simple Simulin金宝appk模型。

  2. 建模选项卡上,单击模型设置

  3. 选择硬件实现>硬件板并选择覆盆子π设备。

  4. 选择代码生成>接口>先进的参数清除MAT-file日志选择。

  5. 选择解算器,然后在解算器的选择部分中,选择固定步类型而且auto(自动求解器选择)解算器

  6. 解算器的细节中,选择允许任务在目标上并发执行.当您选择此选项时,Simulink允许引用模型中的每个速率金宝app在树莓派处理器上作为独立的并发任务执行。

  7. 点击配置任务

  8. 并发执行对话框下的并发建模选项部分中,选择为并发行为启用显式模型分区

  9. 点击选择若要选择目标体系结构

  10. 目标体系结构对话框,选择multicorecustomapi—具有核心亲和力的多核

  11. 清除保留兼容属性选项,将现有目标属性设置重置为默认值。另外,选择保留兼容属性选项保存现有目标属性设置。

  12. 点击好吧

并发执行要包含的对话框更新代码生成属性对于如下所示的任务。

使用显式分区的分区S金宝appimulink模型

在为并发执行配置模型之后,您可以添加单独的任务并使用显式分区映射分区。这使您能够对架构的不同部分执行模型的不同部分。有关更多信息,请参见模型的隐式和显式划分

将模型块转换为原子子系统

确保将模型根级别的块转换为原子子系统块。

  1. 打开raspberrypi_multicore_simple Simulin金宝appk模型。

  2. 选择输入模型面积。

  3. 建模选项卡,在组件部分中,选择原子子系统从选区创建组件部分。

  4. 重复步骤2-3函数而且输出模型的区域。

添加周期性触发器和任务

周期性触发器表示多个周期性中断源,例如多个计时器。触发器的周期性是触发器计划的任务的基本速率或触发器的周期。该模型只使用一个周期性触发器。的周期节点下创建了三个任务输入函数,输出区域。

  1. 并发执行对话框中,右键单击周期节点并选择添加任务.对象中出现任务节点配置执行层次结构。

  2. 选择任务节点,输入任务名称和周期,单击应用.在本例中,任务的周期与块的采样时间相同,0.5秒。

  3. 可选地,为任务指定颜色。颜色表示块到任务的映射。如果没有指定颜色,Simulink将选择默认颜色。金宝app如果您为您的模型启用采样时间颜色,软件将遵守设置。

  4. 重复步骤1-3,为模型的每个区域创建一个周期节点。

  5. 点击应用这是很有必要的。

将块映射到任务、触发器和节点

创建任务和触发器之后,可以显式地为这些执行元素分配分区。

  1. 并发执行对话框,单击任务和映射节点。的任务和映射窗格中出现。原子子系统块出现在表中,每个块下都有一个选择任务条目。

  2. 为对象分配任务输入原子子系统,单击选择任务方框中的名字列并选择周期:Task1在下拉列表中。块到任务的映射符号出现在模型块的左上角。

  3. 重复步骤1-2函数而且输出原子子系统。

树莓派CPU上的多核运行模型

注意:在外部模式(Monitor & Tune)下,树莓派CP金宝appU不支持Simulink模型的多核执行。金宝app

1.在硬件更新后的raspberrypi_multicore_simple Simulink模型的选项卡金宝app模式部分中,选择在船上跑然后点击构建、部署和启动

2.要打开树莓派的SSH连接,请在MATLAB®命令窗口中执行以下命令:

r=raspberrypi('<树莓派IP地址>','<树莓派用户名>','<树莓派密码>')

r.openShell

3.如果需要查看树莓派内核的负载情况,请在树莓派Shell上执行此命令。

htop

观察一下,使用三个CPU内核来执行模型,并且与单内核执行相比,平均内核负载较低。

注:在模型目录下,提供了raspberrypi_multicore_simple_tasks_mapped Simul金宝appink模型供您参考。该模型已配置为并发执行,并已显式地进行了分区。您可以在树莓派板上部署这个Simulin金宝appk模型,并在树莓派Shell窗口中观察到类似的结果。

其他可以尝试的事情

  • 使用树莓派资源监控App观察壳码头核心占用情况。指使用树莓派终端部分。

  • 实现位于。中的raspberrypi_multicore_audio Simulin金宝appk模型模型文件夹中。

  • 实现任意树莓派Simulink模型的多核执行。金宝app

另请参阅