LabVIEW中的多处理和超线程



LabVIEW 2018帮助


版本日期:2018年3月
产品编号:371361R-0118
查看产品信息

下载帮助(仅限Windows)


LabVIEW 2016帮助
LabVIEW 2017帮助
LabVIEW 2018帮助
LabVIEW 2019帮助
LabVIEW 2020帮助

超线程计算机只有一个处理器,但能象具有多处理器的计算机一样运行。(Windows)超线程是英特尔Pentium 4及其以后的处理器具有的一项新功能。在超线程计算机上打开Windows任务管理器,单击性能,任务管理器将显示两个CPU的使用情况。(macOS)打开Activity Monitor检查运行情况。

超线程处理器就象在同一个芯片上嵌入了多个处理器。芯片上有的资源是重复的,如寄存器;有的资源则是共享的,如执行单元和缓存。某些资源如存储微指令的缓冲区被分成几部分,每个逻辑处理器占用其中的一部分。

利用超线程技术优化应用程序与在多处理器系统(又称多核、多CPU或SMP系统)上优化应用程序相似,但两者之间也有些差异。例如,超线程计算机共享执行单元,而一个双处理器的计算机则包含两套完整的执行单元。因此,所有受浮点运算执行单元限制的程序在多处理器计算机上能获得更优的性能,因为处理器无须共享执行单元。对缓存而言也是如此。如使用两条线程访问缓存,多处理器计算机的速度更快。因为多处理器计算机上的每个处理器都有其完整的缓存。

LabVIEW运行概述

LabVIEW运行系统支持多处理技术。在基于文本的传统编程语言中,如要创建多线程应用程序,必须先创建多个线程,然后编写代码使线程间相互通信。LabVIEW能判断VI中使用多线程技术的必要性,由运行系统自动为用户处理多线程通信。

下例说明了如何利用LabVIEW多线程运行系统。

在该VI中,LabVIEW发现可在多处理和超线程环境下独立运行两个循环,通常是同步运行。

质数并行机制范例

下例用于计算所有大于2的质数。

程序框图检查所有3到Num Terms之间的奇数并确定这些数字是否为质数。如果该数能被某个数整除,则内部For循环将返回TRUE。

外部For循环的单次循环之间相互独立。如For循环可按任何次序执行,可在For循环上启用并行循环迭代以提高运行速度。在该例中,可将外面的For循环设置为并行迭代执行,因为每个For循环都有相当大的计算量。

要在VI上启用并行机制,右键单击For循环,从快捷菜单中选择配置循环并行,打开For循环并行迭代对话框。

在多处理器计算机上,LabVIEW可通过并行循环利用多个处理器提高For循环的执行速度。该范例并行执行时效率更高,因为LabVIEW可同时执行不同的代码。

请注意以上两例中的VI都不包含单独的线程管理代码。LabVIEW采用数据流编程框图,使LabVIEW运行系统在不同的线程中运行并行循环实例。

编写用于超线程或多处理器系统的程序

无论是超线程计算机还是多处理器计算机,对其应用程序进行性能优化的做法几乎相同。但是超线程计算机在两个逻辑处理器之间共享某些资源,如缓存和执行单元,因此它们之间仍然存在差别。如果担心超线程计算机上的共享资源限制了应用程序的性能,可使用高级采样性能分析器(如Intel Vtune)对应用程序进行测试。

文章是否对您有帮助?

没有帮助