利用NI LabVIEW优化多核处理器环境下的自动化测试应用
多线程编程的挑战
迄今为止,处理器技术的创新为我们带来了配有工作于更高时钟速率的CPU的计算机。然而,随着时钟速率逼近其理论上的物理极限,人们开始投入到具备多个处理核的新型处理器的开发。借助这些新型多核处理器,工程师们在自动化测试应用开发中利用并行编程技术,可以实现最佳的性能和最大的吞吐量。爱德华×李博士——加州大学伯克利分校电气与计算机工程教授——阐述了并行处理的技术优势。
“许多技术专家预言,对于摩尔定律的终结回应,将是日趋并行的计算机架构。如果我们希望继续提高计算性能,计算机程序必须能够利用这种并行机制。”
而且,业界专家业已认识到,对于编程应用,如何利用多核处理器将是一个巨大的挑战。比尔×盖茨——微软公司的缔造者——是这样论述的:
“要想充分利用并行工作的处理器的威力,…软件必须能够处理并发性问题。但正如任何一位编写过多线程代码的开发者告诉你的那样,这是编程领域最艰巨的任务之一。”
幸运的是,NI LabVIEW软件,通过一个直观的、用于创建并行算法的API,为我们提供了一个理想的多核处理器编程环境,所创建的并行算法可以将多个线程动态分配至一
项给定的应用。事实上,您可以利用多核处理器优化自动化测试应用,以获取最佳性能。
而且, PXI Express的模块化仪器增强了这一技术优势,因为这些仪器利用了PCI Express总线所能支持的高数据传输速率。得益于多核处理器和PXI Express仪器的两个具体应用是:多通道信号分析和在线处理(硬件在环)。在此白皮书中,我们将评估各种并行编程技术,并描述每项技术所带来的性能优势。
实现并行测试算法
一项常见的得益于并行处理的自动化测试应用便是多通道信号分析。由于频率分析是一项占用处理器运行时间较多的操作,您可以并行运行测试代码,将每个通道的信号处理分配至多个处理器核,提高执行速度。从编程人员的角度来看,为获得这一技术优势,唯一需要改变的只是测试算法结构的细微调整。
为描述这一过程,现比较用于多通道频率分析(快速傅立叶变换或FFT)的两个算法的执行时间,它们分别位于一个高速数字化仪的两个通道上。NI PXIe-5122 14-位高速数字化仪的两个通道均以最高采样率(100 MS/s)采集信号。首先,我们察看LabVIEW中对应于这一操作的传统顺序编程模型。
图1. 利用顺序执行的LabVIEW代码
采集来自数字化仪的两个通道的信号
图1中,两个通道的频率分析均在一个FFT快速VI中完成,它顺序分析每个通道信号。虽然上述算法也可以在多核处理器环境下有效执行,但是,您还可以通过并行处理每个通道来进一步提高算法性能。
如果您剖析上述算法,就会发现完成FFT所需的时间要比从高速数字化仪采集数据长得多。通过每次获取各个通道的数据并且并行执行各个通道的FFT,可以显著降低处理时间。图2表示了一个采用并行方法的新的LabVIEW模块框图。
图2. 利用并行执行的LabVIEW代码
顺序获取数字化仪的每个通道的数据。值得注意的是如果两次数据获取均来自不同的仪器,那么您可以彻底并行完成这些操作。然而,由于FFT占用大量的处理器时间,您仍可以仅通过将信号并行处理来改善性能,减少了总的执行时间。图3显示了两种实现的执行时间:
图3. 随着数据块大小的增加,通过并行处理节约的处理时间愈为显著。
事实上,对于更大的数据块,并行算法方法实现了近2倍的性能改进。图4描述了性能随采集数据块大小(以采样数为单位)增大而提高的精确百分比。
图4. 对于大于1百万采样(100 Hz精度带宽)的数据块,并行方式实现了80%或更高的性能增长。
在多核处理器环境下,可以方便地实现自动化测试应用的性能改进,因为您可以使用LabVIEW动态地分配每一个线程。事实上,您不需要创建特殊的代码以支持多线程,而是通过最少的编程调整,利用多核处理器来达到并行测试。
配置定制的并行测试算法
并行信号处理算法帮助LabVIEW在多个处理器核中划分处理器的用途。图5按顺序描述了CPU处理算法每一部分。
图5. LabVIEW能够并行处理许多采集数据,从而节省了执行时间。
并行处理要求LabVIEW拷贝(或克隆)每个信号处理子例程。缺省情况下,LabVIEW的许多信号处理算法配置为“可重入执行”。这就意味着LabVIEW将动态分配给每个子例程唯一的实例,包括独立线程和存储空间。因而,您必须将定制的子例程的配置,工作于可重入方式。您可以通过LabVIEW中一个简单的配置步骤完成这一工作。欲设置这一属性,选择文件菜单下VI属性并选中“执行”栏;然后,选中“可重入执行”标记(如图6所示)。
图6.
- 基于LabVIEW RT的自定义流程测控系统(10-30)
- 基于LabVIEW的语音分析平台的实现(10-30)
- 基于示波器卡和LabVIEW的马达编码器测试系统(11-06)
- 基于虚拟仪器的网络虚拟实验室构建(11-06)
- 运用LabView控制DS3900串口通信模块(02-02)
- 采用模块化仪器,对新兴音频和视频应用进行测试(02-19)