利用NI LabVIEW图形化开发平台降低并行编程复杂性

图1. 利用顺序执行的LabVIEW代码

和其他文本编程语言一样,处理多通道信号的传统方法是将各个通道信号按顺序读入并逐通道的进行分析,上面基于LabVIEW的顺序编程模型很好的说明了这点,0、1两通道的数据被按顺序读入后,整合为一路数组,并由一个FFT函数进行信号分析并输出。虽然顺序结构能够顺利地在多核机器上运行,但确不能使得CPU负担得到有效的分摊,因为即使在双核的机器上, FFT程序也只能在一个CPU上被执行,而此时另一个CPU却被闲置了。

实际上,两个通道的FFT运算相互独立,如果程序能够将两个FFT自动分配到一台双核机器上的的两个CPU上,那么理论上程序的运行效率将提高一倍。在LabVIEW的图形化编程平台上,情况正是如此,我们可以通过并行化处理这两个通道来真正提高算法性能。图2表示了一种采用并行结构的LabVIEW代码,从图形化编程的角度来看,仅仅是增加了一路并行的FFT函数而已。

图2. 利用并行执行的LabVIEW代码

由于数据量越大,信号处理运算在工程应用中所占的处理器时间就越长,所以通过简单的程序改动将原来的信号处理程序并行化,可以改善程序性能,减少了总的执行时间。

图3. 对于大于1M采样(100 Hz精度带宽)的数据块,并行方式实现了80%或更高的性能增长。