账号:
密码:
CTIMES / 文章 /   
加速Simulink模型内的讯号处理演算法模拟
 

【作者: Akash Gopisetty】2021年02月18日 星期四

浏览人次:【7733】
  

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


相关文章
洞察健康数据:一种可付诸行动的转换公式
以模型为基础的设计开发结合液压、机械和电气之PLC-Based控制器
促成次世代的自主系统
AI强势来袭 物联终端运算需求急遽增温
深究Subaru汽车Eyesight驾驶辅助平台之开发
comments powered by Disqus
相关讨论
  相关新闻
» 兆镁新与睿怡科技连袂叁加「TOUCH TAIWAN智慧制造展」
» 电动车供应链完整呈现 2021全球汽机车零配件与车电展掀序幕
» 工业4.0德国前导专案10年有成 博世营收累计突破40亿欧元
» 宏于电机携手施耐德、三菱、士林电机 打造台湾首座IS-06低压配电盘品牌柜
» 台湾电机龙头陆续结盟转型 拚绿能也不忘集团发展
  相关产品
» OnRobot全新电磁夹爪MG10适用於制造、汽车与航空产业
» 中美万泰推出医用电脑电源内装设计WMP-24G-PIS
» 中美万泰推出新款Intel第八代Whisky Lake工业级触控电脑
» 安勤触控双萤幕AIO POS终端机RiVar模组化扩充快速
» 大昌华嘉在台韩推广DataPhysics量测设备 投入表面和介面科学领域

AD


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

Copyright ©1999-2021 远播信息股份有限公司版权所有 Powered by O3
地址:台北市中山北路三段29号11楼 / 电话 (02)2585-5526 / E-Mail: webmaster@ctimes.com.tw