在多CPU实时应用程序中使用并行操作
- 更新时间2025-05-20
- 阅读时长2分钟
LabVIEW的多线程图形化编程环境能利用多CPU系统并行执行的各种优势。多CPU系统也叫多核、多处理器或SMP系统。要在LabVIEW中实现并行结构,在程序框图上放置两个或两个以上对象,但是不连接这些对象即可。如VI在一个包含N个CPU的系统中执行,该系统可并行执行N条线程。可将代码分别放在各个并行循环中,或利用并行数据处理的优势,将多个输入通道分配给各自的CPU处理。
注: 过度使用CPU会在CPU之间频繁传输数据,延长时滞。设计并行结构时还必须避免因为共享资源引起的延时。同时请求使用共享资源将加快并行执行,削弱多CPU系统的性能优势。可使用Real-Time Trace Viewer确定并行操作是否确实为并行执行。
并行循环
如在多CPU系统上运行的RT应用程序中包括并行循环,CPU排序器会进行自动负载平衡,在CPU之间合理分配执行线程。也可使用定时循环的已分配CPU输入端,将定时循环手动分配至指定的CPU。
注: 打开一个在LabVIEW 8.5或更早版本中创建的VI,所有定时循环自动在默认CPU上运行。在该情况下,可通过手动CPU分配和CPU池,发挥多CPU的优点。
并行数据处理
可将多个数据通道分为若干组,然后在单独的CPU上并行处理这些通道组。例如,如要在双核系统上处理16路输入通道,可将通道分为两组,每组8条通道,如下列程序框图所示:
在该范例中,Process Data.vi被配置为重入子VI,因此子VI的每个实例接收到一个专用的内存空间,且两个实例无需在同一CPU上执行。Process Data.vi的两个实例之间没有数据流依赖关系,CPU排序器在可用的CPU之间自动平衡两个实例。
注: LabVIEW将定时循环作为一个单独的线程。要利用定时循环并行处理的优点,可将并行处理的代码放在单独的定时循环中。关于在多CPU实时系统中使用并行机制的详细信息,请参考NI网站。