- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
通过LabVIEW 形化开发平台有效优化多核处理器环境下的信号处理性能
图3描述了性能随采集数据块大小(以采样数为单位)增大而提高的精确百分比。事实上,对于更大的数据块,并行算法方法确实实现了近2倍的性能改进。工程师们不需要创建特殊的代码来支持多线程,在多核处理器环境下,只需通过最少的编程调整,利用LabVIEW自动分配每一个线程到多核处理器的特性,可以方便的实现信号处理能力的大幅度提升,从而达到了自动化测试应用的性能改进。
程序性能的进一步优化
LabVIEW并行的信号处理算法不仅帮助工程师提高程序性能,而且可以更清楚的划分多个处理器核在项目中的不同用途。比如,将控制采样输入,显示输出和信号分析的模块独立分开。
以HIL(Hareware-in-the-loop)或在线信号处理应用为例。首先,使用高速数字化仪或高速数字I/O模块来采集信号,并在软件中执行数字信号处理算法。然后,通过另一个模块化仪器生成结果。常见HIL应用包括在线数字信号处理(如滤波、插值等等)、传感器仿真和定制组件模拟等等。
一般来说,HIL可以使用两种基本的编程结构来完成,单循环结构和带有队列的流水线式多循环结构。单循环结构实现简单,对于小数据块具有较低时延,但单循环结构受限于各个环节的顺序结构而无法实现并发性,例如,由于处理器只能执行一个函数,在处理数据的同时就无法执行仪器IO,所以单循环结构无法有效利用多核CPU的优势。相比之下,多循环结构则能够更好的利用到多核处理器,从而支持高得多的吞吐量。
对于一项多循环结构的HIL应用来说,可以通过三个独立的while循环和两个队列结构,实现其间的数据传递。在此情况下,第一个循环从仪器采集数据,第二个循环专门执行信号处理分析,而第三个循环将数据写入到另一台仪器。这样的处理方式,也被称之为流水线式信号处理(pipeline)。
图4.带有多个循环与队列结构的流水线式信号处理。
图4中,最上面的循环是一个生产者(Producer)循环,它从一个高速数字化仪采集数据,并将其传递至第一个队列结构(FIFO)。中间的循环同时作为生产者和消费者(Consumer)工作。每次迭代中,它从队列结构中接收(消费)若干个数据集,并以流水线的方式独立为四个不同数据块的内容进行7阶低通滤波的处理,同时中间的循环也作为一个生产者工作,将处理后的数据传递至第二个队列结构。最后,最下面的循环将处理后的数据写入至高速数字I/O模块。于是,在多核的系统下, LabVIEW能够自动地将上面的程序结构中独立运行的的不同循环分配在不同的处理器上,同时,还可以根据CPU的运行情况将中间循环中四个数据块的信号处理任务也分配在不同的处理器上,实现了在多核处理器环境下的性能改进。
并行处理算法改善了多核CPU的处理器利用率。事实上,总吞吐量取决于两个因素,处理器利用率和总线传输速度。通常,CPU和数据总线在处理大数据块时工作效率最高。而且,我们可以进一步使用具有更快传输速度的PXI(PCI) Express仪器,来减小数据传输时间。
利用NI强大的并行性计算的优势以及PCIe高速数据流传输加上Intel的多核技术,在DELL的PowerEdge 2950八核处理器上,以10KHz(2.56MB/s)的速率同步采样并处理128个通道的数据,NI帮助ASDEX Tokamak——德国最先进的核聚变装置,完成了"不可能完成的任务"——为了保证Tokamak装置中等离子体的高速稳定的运转,将其装置外壁上的88个磁感应器上的大量数据转换成64*128个点格上的偏微分方程组,并同时在短短的1ms内完成了整个计算过程!
正如德国开发负责人Dr. Louis Giannone所说的:
"利用LabVIEW编程所完成的并行化应用控制,我们在8核机器上将速度提高了5倍,使得我们成功达到1ms闭环控制速率的要求!"。
上一篇:利用LabVIEW
数据记录
嗫啬?槎源笮驮熘匠У闹浇生产进行仿真与控制
下一篇:LabVIEW
编译器深层解析