账号:
密码:
智动化 / 文章 /

加速Simulink模型内的讯号处理演算法模拟
[作者 Akash Gopisetty]   2021年02月18日 星期四 浏览人次: [24705]

从Dataflow领域(domain)可以看出Simulink模型中的建模型式,这些型式可以被分配到多个执行绪来平行地执行。这种方法利用主机CPU所提供的处理能力带来的优势,借以优化吞吐量、缩短模拟时间。由于在运算工作被分散到整个模型时可以加入平行处理,Dataflow领域(domain)的效果最好。不过,这种方式仅适用于离散讯号。


讯号处理系统设计因为涉及了演算法或资料密集的应用,通常具备高度的运算复杂度,这些复杂系统的建立及模拟可能相当耗时。 Simulink中的Dataflow领域(domain)功能提供了一种方式,可以缩短模型模拟时间。这项功能透过将Simulink模型自动地分割,并且使用电脑主机上的CPU核心平行地执行来加快模拟速度。


本文将说明如何以三个简单的步骤来设置Dataflow。接着,以一个无线电模型为例来展示Dataflow的运作,并比较使用与未使用Dataflow进行模拟所花费时间的差异。


Dataflow使用的平行运算类型

为了要将模型分割并且平行地执行,Dataflow使用下列其中一种资料和任务平行(task parallelism)组合(图1):


*外显平行(explicit parallelism):透过不同演算法处理不同资料集。


*展开式平行(unfolding parallelism):以相同的演算法处理连续的资料流框架。


*管线式平行(pipelining parallelism):以不同的演算法处理相同资料的不同部位。



图1 : Dataflow使用的平行运算类型。
图1 : Dataflow使用的平行运算类型。

设置Dataflow

为了在Simulink模型中启用Dataflow领域(domain),首先需要执行一个子系统,执行的方式取决于设计的进度。


如果设计流程才刚开始,可使用DSP System Toolbox(DSP系统工具箱)内的Dataflow Subsystem Block(图2),这个模块已预先被装配完成,可以直接拿来使用,只需要将它拖曳到Simulink模型,并且以演算法元件来填充它。



图2 : DSP系统工具箱模块库内的Dataflow子系统。
图2 : DSP系统工具箱模块库内的Dataflow子系统。

如果已经建立起设计模型,就可以把希望进行平行处理的演算法模块放进子系统,并且依照以下步骤来设置Dataflow:


1.选择刚刚建立的子系统。


2.在Property Inspector分类下Execution页签的Set execution domain选项打勾。


3.设定Dataflow为Domain。


在这个子系统里面,左下角的符号代表子系统领域(domain)已经被设定为Dataflow。


此Dataflow领域(domain)会先以单一执行绪(thread)执行模型来取得模型概况,接着自动分割子系统来进行多执行绪的执行。


Dataflow的运作

我们的范例模型模拟了一个无线电发射器和接收器,它包含了数位的上行与下行转换器来调整讯号频率,借此实现一个调变器和解调器(图3)。范例中的输入为一段取样频率为8k Hz的演讲录音,输出为两个频谱分析器及一个音频接收器。



图3 : 具有单通道音讯输入的无线电模型。
图3 : 具有单通道音讯输入的无线电模型。

第一步,先来测量未启动Dataflow状态下模拟这个模型所花的时间[1]。将输出模块标注为关闭,可以专注于演算法模拟,不会受到执行示波器和音讯输出所需的固定时间的影响。使用tic-toc指令来测量模拟时间。


现在加入Dataflow,会将代表演算法的模块放入子系统,并且将领域(domain)调整为Dataflow(图4)。



图4 : 启动了Dataflow的单一通道音讯输入无线电模型。
图4 : 启动了Dataflow的单一通道音讯输入无线电模型。

Dataflow assistant功能列出了建议的模型设定变更(图5)。



图5 :  Dataflow assistant列出的模型设定变更建议。
图5 : Dataflow assistant列出的模型设定变更建议。

Dataflow assistant建议的其中一项变更为加入延迟。延迟通常在Dataflow辨识到平行处理的机会时被加到模型中来增加吞吐量。这些沿着讯号线加入的延迟以z-n 标签来表示。


我们接受这些变更,并且将启动了Dataflow的模型储存为 familyRadioServiceExample_Dataflow。


接着,同前述一样使用tic-toc指令来测量新子系统的执行时间。


启动了Dataflow之后的执行时间为2.5秒,比正常单一执行绪的执行速度快了1.7倍,而速度加快是因为编译器的优化、模型设置的变更、以及在模型中加入了延迟。


然而,模型仅以一个执行绪执行,加速的效果并不显著,这是因为大部分的运算工作都集中在上行和下行转换器模块,当运算量延展到整个模型时,提供了更多机会来建立平行执行绪时,Dataflow在这时的表现最好。在下一个段落将延伸模型,示范如何更进一步地使用Dataflow来改善模拟表现。


较大模型的处理

我们加入一个多通道的音讯输入讯号来增加模型的运算复杂度,这会将需要处理的资料量增加为两倍,也给予Dataflow更多优化模拟表现的途径。图6绘制的模型已为变更为带有立体音讯,执行该模型需要18.6秒。藉由启用讯号维度资讯套叠,将讯号输入设定为真的具有两组音讯通道。



图6 : 带有一个立体声输入多通道声音讯号的无线电模型。
图6 : 带有一个立体声输入多通道声音讯号的无线电模型。

完成Dataflow上的调整并且回到模型之后,发现执行一次跑在五个并行的执行绪的模拟花费时间为4.5秒—加快了几乎四倍(图7)。



图7 : Dataflow assistant显示模拟执行的延迟与执行绪数量。
图7 : Dataflow assistant显示模拟执行的延迟与执行绪数量。

Dataflow的限制

Dataflow可以协助加快大部分的模拟,不过可能还是无法适用于所有模型—比如较小、复杂度较低的模型、或者计算量集中于少数模块的模型。


在这类情况,透过Dataflow达成的加速并不能够补偿以平行执行绪同步和执行模型所需要的开支。如同在无线电模型这个案例所见,Dataflow在运算量在模型中平均分散时的表现最好,因为平均分散的工作量为模型的各部分提供更多的平行执行机会。


(本文由钛思科技提供;作者Akash Gopisetty任职于MathWorks公司)


参考资料

[1]所有模拟皆执行于装载Intel Xeon CPU W-2133@ 3.6 GHz 6核心12执行绪处理器的Windows桌上型电脑。


相关文章
NASA太空飞行器任务开发光学导航软体
近即时模拟与控制协助自主水下载具机动运行
Premium Radar SDK以演算技术改进汽车雷达应用
资料科学与机器学习协助改善颈部损伤评估
配电网路的即时模拟环境开发
comments powered by Disqus
  相关新闻
» 明纬推出新系列30W~90W??墙式可换AC??头适配器环球认证
» RIN国际研发高峰会手举行 金属中心展出亮眼成果
» 明纬推出NGE100(U)系列:100W环球通用4埠USB氮化??快速充电器
» 台达子公司泰达8厂及研发中心开幕 扩大电动车研发及产能布局
» Fortinet SASE台湾网路连接点今年落成 全台巡??落实云地零信任资安
  相关产品
» 凌华全新IP69K全防水不锈钢工业电脑专为严苛环境设计
» 凌华支援第14代 Intel处理器用於先进工业与 AI 解决方案
» 智慧监测良方 泓格微型气象站提供资讯面面俱到
» 凌华新款5G IIoT远端边缘网路闸道器采用Arm架构
» SICK W10直接反射式光电感测器提升物体检测多样性


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 / E-Mail: webmaster@hope.com.tw