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

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

从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桌上型电脑。


相关文章
以模型为基础的设计方式改善IC开发效率
使用深度学习进行海上雷达资料品质管控自动化
工业有线感测j;3xj4连接转成物联网装置
实用型数位转型的最隹实践
企业部署演算法的集中管理、保护与扩充
comments powered by Disqus
  相关新闻
» 施耐德电机Easy微型资料中心推动边缘运算更快速可靠
» 思纳捷完成2亿元募资 获华新、东元、涛略资本与华镁鑫叁投
» 智慧城市发展广纳创新能量 智慧台北创新奖展示成果
» 联邦快递联手BrightDrop助电动货车行驶距离创世界纪录
» 东台精机发布2022年4月营收成果
  相关产品
» Basler boost相机配备安美森影像感测器和Basler F-mount镜头
» 宜鼎全新InnoAgent频外管理扩充模组 高速高效远端管理AIoT装置
» 德承嵌入式电脑打造智能制造中关键设备的核心
» 新型igus夹具具有抗压扁效果,可牢靠固定空压软管
» 凌华推出PCIe-ACC100加速5G虚拟化无线电存取网路应用