一、前言
此示例演示如何使用 Simulink中的数据流执行域在多个内核上运行视频处理系统。
数据流执行域允许您在计算密集型系统的设计中使用多个内核。此示例演示数据流作为子系统的执行域如何提高模型的模拟性能。
二、视频中的对象计数
此示例演示如何使用基本形态运算符从视频流中提取信息。在这种情况下,模型会计算每个视频帧中的订书钉数量。该模型使用平顶块去除不均匀的照明,然后使用自动阈值块将其转换为二进制图像。然后,使用 Blob 分析块计算订书钉的数量并计算每个订书钉的质心。“绘制标记”和“插入文本”块用于标记装订并写入在视频帧上找到的装订数量。
三、设置数据流子系统
此示例使用 Simulink 中的数据流域来利用桌面上的多个内核来提高仿真性能。此模型中数据流子系统的 Domain 参数设置为 。可以通过选择子系统,然后访问属性检查器来查看此内容。若要访问属性检查器,请在 Simulink Toolstrip 的“建模”选项卡上,在“设计”库中选择“属性检查器”,或在“模拟”选项卡的“准备库”中选择“属性检查器”。
数据流域会自动将模型分区为多个线程,以提高性能。将 Domain 参数设置为 后,可以使用多核选项卡分析来分析模型以获得更好的性能。当模型中存在数据流域时,“多核”选项卡在工具行程中可用。
四、分析数据流子系统中的并发性
对于此示例,多核选项卡模式设置为用于仿真性能分析。
建议优化模型设置以获得最佳仿真性能。若要接受建议的模型设置,请在“多核”选项卡上,单击“优化”。或者,您可以使用“优化”按钮下方的下拉菜单单独更改设置。在此示例中,模型设置已是最佳的。
在“多核”选项卡上,单击“运行分析”按钮以开始分析数据流域的模拟性能。分析完成后,“分析报告和建议”窗口将显示数据流子系统在模拟期间使用的线程数。
分析模型后,“分析报告和建议”窗口将显示一个线程,因为模型中块之间的数据依赖关系会阻止块并发执行。通过对数据依赖块进行流水线处理,数据流子系统可以提高并发性,从而提高数据吞吐量。“分析报告和建议”窗口显示建议的管道延迟数,如“建议”,以增加并发性。计算建议的延迟值以提供最佳性能。
下图显示了“分析报告和建议”窗口,其中数据流子系统的建议延迟为 2。
单击“接受”按钮以使用数据流子系统的建议延迟。也可以直接在“延迟属性检查器”参数中输入此值。Simulink 使用
标记,标记。
“分析报告和建议”窗口现在将线程数显示为 2,这意味着数据流子系统内的块使用 2 个线程并行模拟。突出显示线程 根据其线程分配使用颜色突出显示块,如线程突出显示图例所示。显示管道延迟 显示数据流子系统中插入流水线延迟的位置
标签。
五、多核仿真性能
我们通过比较使用和不使用数据流运行模型所花费的执行时间来衡量使用数据流域的性能改进。执行时间是使用 sim 命令测量的,该命令返回模型的模拟执行时间。在测量执行时间时,会注释视频查看器块以测量数据流子系统主要花费的时间。
六、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序有偿获取:评论区下留言,博主看到会私信你。