《通过LabVIEW图形化开发平台有效优化多核处理器环境下的信号处理性能.docx》由会员分享,可在线阅读,更多相关《通过LabVIEW图形化开发平台有效优化多核处理器环境下的信号处理性能.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、通过LabVIEW图形化开发平台有效优化多核处理器环境下的信号处理性能通过LabVIEW图形化开发平台有效优化多核处理器环境下的信号处理性能luonan导语:固然主频的提升一定程度上进步了程序运行效率,但越来越多的问题也随之出现,耗电、散热都成为阻碍设计的瓶颈所在,芯片本钱也相应进步。摩尔定律问世40余年来,人们业已看到半导体芯片制造工艺程度以一种令人目眩的速度在进步,Intel微处理器的最高主频甚至超过了4G。固然主频的提升一定程度上进步了程序运行效率,但越来越多的问题也随之出现,耗电、散热都成为阻碍设计的瓶颈所在,芯片本钱也相应进步。当单独依靠进步主频已不能实现性能的高效率时,双核乃至多核
2、成为了进步性能的唯一出路。随着AMD率先打破摩尔定律、终结频率游戏后,Intel和AMD都开场逐步推出了基于双核、四核甚至八核的处理器,工程师们逐渐投入到基于多核处理器的新型应用开发中去时,大家开场发现,借助这些新的多核处理器,并在应用开发中利用并行编程技术,可以实现最正确的性能和最大的吞吐量,大大进步应用程序的运行效率。然而,业界专家们也同时认识到,对于实际的编程应用,多核处理器的并行编程却是一个宏大的挑战。比尔盖茨是这样阐述的:“要想充分利用并行工作的处理器的威力,软件必须可以处理并发性问题。但正如任何一位编写太多线程代码的开发者告诉你的那样,这是编程领域最艰巨的任务之一。比方用C+写一个
3、多线程的程序,程序员必需要非常熟悉C+,理解怎样将C+程序分成多个线程和并在各个线程间进展任务调度,此外还要理解Windows多线程的机制,熟悉WindowsAPI的调用方法和MFC的架构等等。在C+上调试多线程程序,更是被很多程序员视为噩梦。所以,对于测试测量行业的工程师来讲,在传统开发环境下要想获得多核下的效率提升意味着大量而复杂的多线程编程任务,而使得工程师脱离了自动化测试及其信号处理任务本身,于是,要想在当前的多核机器上充分利用其架构和并行运算的上风,反而成为工程师们“不可能完成的任务。LabVIEW降低并行编程的复杂性,快速开发并行构架的信号处理应用幸运的是,NILabVIEW图形化
4、开发平台为我们提供了一个理想的多核处理器编程环境。作为一种并行构造的编程语言,LabVIEW能将多个并列的程序分支自动分配成多个线程并分派到各个处理核上,让一些计算量较大的数学运算或者信号处理应用得以进步运行效率,并获取最正确性能。我们以自动化测试中最常见的多通道信号处理分析为例。由于多通道中的频率分析是一项占用途理器资源较多的操纵,假如可以让程序并行地将每个通道的信号处理任务分配至多个处理器核,对于进步程序执行速度来讲,就显得尤为重要。而目前,从LabVIEW编程人员的角度来看,要想获得这一本来“不可能的技术上风,唯一需要改变的只是算法构造的细微调整,而并不需要复杂且耗时耗力的代码重建工作。
5、以双通道采样为例,我们需要分别对高速数字化仪的两个通道上的数据进展快速傅立叶变换(FFT)。假设我们采用的高速数字化仪的两个通道均以100MS/s采样率收集信号并实时分析。首先,我们来看LabVIEW中对于这一操纵的传统顺序编程模型。图1.利用顺序执行的LabVIEW代码和其他文本编程语言一样,处理多通道信号的传统方法是将各个通道信号按顺序读入并逐通道的进展分析,上面基于LabVIEW的顺序编程模型很好的讲明了这点,0、1两通道的数据被按顺序读入后,整合为一路数组,并由一个FFT函数进展信号分析并输出。固然顺序构造可以顺利地在多核机器上运行,但确不能使得CPU负担得到有效的分摊,由于即使在双核
6、的机器上,FFT程序也只能在一个CPU上被执行,而此时另一个CPU却被闲置了。实际上,两个通道的FFT运算互相独立,假如程序可以将两个FFT自动分配到一台双核机器上的的两个CPU上,那么理论上程序的运行效率将进步一倍。在LabVIEW的图形化编程平台上,情况正是如此,我们可以通过并行化处理这两个通道来真正进步算法性能。图2表示了一种采用并行构造的LabVIEW代码,从图形化编程的角度来看,仅仅是增加了一路并行的FFT函数而已。图2.利用并行执行的LabVIEW代码由于数据量越大,信号处理运算在工程应用中所占的处理器时间就越长,所以通过简单的程序改动将原来的信号处理程序并行化,可以改善程序性能,
7、减少了总的执行时间。图3.对于大于1M采样100Hz精度带宽的数据块,并行方式实现了80%或者更高的性能增长。图3描绘了性能随收集数据块大小以采样数为单位增大而进步的准确百分比。事实上,对于更大的数据块,并行算法方法确实实现了近2倍的性能改良。工程师们不需要创立特殊的代码来支持多线程,在多核处理器环境下,只需通过最少的编程调整,利用LabVIEW自动分配每一个线程到多核处理器的特性,可以方便的实现信号处理才能的大幅度提升,进而到达了自动化测试应用的性能改良。程序性能的进一步优化LabVIEW并行的信号处理算法不仅帮助工程师进步程序性能,而且可以更清楚的划分多个处理器核在工程中的不同用处。比方,
8、将控制采样输入,显示输出和信号分析的模块独立分开。以HIL(Hareware-in-the-loop)或者在线信号处理应用为例。首先,使用高速数字化仪或者高速数字I/O模块来收集信号,并在软件中执行数字信号处理算法。然后,通过另一个模块化仪器生成结果。常见HIL应用包括在线数字信号处理如滤波、插值等等、传感器仿真和定制组件模拟等等。一般来讲,HIL可以使用两种根本的编程构造来完成,单循环构造和带有队列的流水线式多循环构造。单循环构造实现简单,对于小数据块具有较低时延,但单循环构造受限于各个环节的顺序构造而无法实现并发性,例如,由于处理器只能执行一个函数,在处理数据的同时就无法执行仪器IO,所以
9、单循环构造无法有效利用多核CPU的上风。相比之下,多循环构造那么可以更好的利用到多核处理器,进而支持高得多的吞吐量。对于一项多循环构造的HIL应用来讲,可以通过三个独立的while循环和两个队列构造,实现其间的数据传递。在此情况下,第一个循环从仪器收集数据,第二个循环专门执行信号处理分析,而第三个循环将数据写入到另一台仪器。这样的处理方式,也被称之为流水线式信号处理(pipeline)。图4.带有多个循环与队列构造的流水线式信号处理。图4中,最上面的循环是一个消费者Producer循环,它从一个高速数字化仪收集数据,并将其传递至第一个队列构造FIFO。中间的循环同时作为消费者和消费者Consu
10、mer工作。每次迭代中,它从队列构造中接收消费假设干个数据集,并以流水线的方式独立为四个不同数据块的内容进展7阶低通滤波的处理,同时中间的循环也作为一个消费者工作,将处理后的数据传递至第二个队列构造。最后,最下面的循环将处理后的数据写入至高速数字I/O模块。于是,在多核的系统下,LabVIEW可以自动地将上面的程序构造中独立运行的的不同循环分配在不同的处理器上,同时,还可以根据CPU的运行情况将中间循环中四个数据块的信号处理任务也分配在不同的处理器上,实现了在多核处理器环境下的性能改良。并行处理算法改善了多核CPU的处理器利用率。事实上,总吞吐量取决于两个因素,处理器利用率和总线传输速度。通常
11、,CPU和数据总线在处理大数据块时工作效率最高。而且,我们可以进一步使用具有更快传输速度的PXI(PCI)Express仪器,来减小数据传输时间。利用NI强大的并行性计算的上风以及PCIe高速数据流传输加上Intel的多核技术,在DELL的PowerEdge2950八核处理器上,以10KHz(2.56MB/s)的速率同步采样并处理128个通道的数据,NI帮助ASDEXTokamak德国最先进的核聚变装置,完成了“不可能完成的任务为了保证Tokamak装置中等离子体的高速稳定的运转,将其装置外壁上的88个磁感应器上的大量数据转换成64*128个点格上的偏微分方程组,并同时在短短的1ms内完成了整个计算经过!正如德国开发负责人Dr.LouisGiannone所讲的:“利用LabVIEW编程所完成的并行化应用控制,我们在8核机器上将速度进步了5倍,使得我们成功到达1ms闭环控制速率的要求!。0