多线程编程的应战
迄今为止,处理器技能的立异为咱们带来了配有作业于更高时钟速率的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剖析函数。