在树莓派上实现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。在为并发执行配置模型之后,您可以选择要部署到您的模型的体系结构。
打开raspberrypi_multicore_simple Simulin金宝appk模型。
在建模选项卡上,单击模型设置.
选择硬件实现>硬件板并选择
覆盆子π
设备。选择代码生成>接口>先进的参数清除
MAT-file日志
选择。选择解算器,然后在解算器的选择部分中,选择
固定步
为类型而且auto(自动求解器选择)
为解算器.下解算器的细节中,选择允许任务在目标上并发执行.当您选择此选项时,Simulink允许引用模型中的每个速率金宝app在树莓派处理器上作为独立的并发任务执行。
点击配置任务.
在并发执行对话框下的并发建模选项部分中,选择为并发行为启用显式模型分区.
点击选择若要选择目标体系结构.
在目标体系结构对话框,选择
multicorecustomapi—具有核心亲和力的多核
.清除保留兼容属性选项,将现有目标属性设置重置为默认值。另外,选择保留兼容属性选项保存现有目标属性设置。
点击好吧.
的并发执行要包含的对话框更新代码生成属性对于如下所示的任务。
使用显式分区的分区S金宝appimulink模型
在为并发执行配置模型之后,您可以添加单独的任务并使用显式分区映射分区。这使您能够对架构的不同部分执行模型的不同部分。有关更多信息,请参见模型的隐式和显式划分
将模型块转换为原子子系统
确保将模型根级别的块转换为原子子系统块。
打开raspberrypi_multicore_simple Simulin金宝appk模型。
选择输入模型面积。
在建模选项卡,在组件部分中,选择原子子系统从从选区创建组件部分。
重复步骤2-3函数而且输出模型的区域。
添加周期性触发器和任务
周期性触发器表示多个周期性中断源,例如多个计时器。触发器的周期性是触发器计划的任务的基本速率或触发器的周期。该模型只使用一个周期性触发器。的周期节点下创建了三个任务输入,函数,输出区域。
在并发执行对话框中,右键单击周期节点并选择添加任务.对象中出现任务节点配置执行层次结构。
选择任务节点,输入任务名称和周期,单击应用.在本例中,任务的周期与块的采样时间相同,
0.5
秒。可选地,为任务指定颜色。颜色表示块到任务的映射。如果没有指定颜色,Simulink将选择默认颜色。金宝app如果您为您的模型启用采样时间颜色,软件将遵守设置。
重复步骤1-3,为模型的每个区域创建一个周期节点。
点击应用这是很有必要的。
将块映射到任务、触发器和节点
创建任务和触发器之后,可以显式地为这些执行元素分配分区。
在并发执行对话框,单击任务和映射节点。的任务和映射窗格中出现。原子子系统块出现在表中,每个块下都有一个选择任务条目。
为对象分配任务输入原子子系统,单击选择任务方框中的名字列并选择
周期:Task1
在下拉列表中。块到任务的映射符号出现在模型块的左上角。重复步骤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