LabVIEW如何处理多处理和多线程?

问题描述 投票:0回答:2

INTRO

multiprocessing =使用多个CPU内核来完成一项任务(每个内核具有单独的内存,因此需要每个内核的管道和数据结构相互“交谈””)]]

multithreading

=通过任务调度程序使用多个线程(在单个CPU内核上)来完成任务(所有线程在CPU内核上共享相同的内存)
  • 静态(临时)多线程

    -通过安排任务在高速缓存未命中期间无中断地连续发生(即等待读取/写入I / O设备)来利用空闲I / O时间;用于I / O绑定任务
  • 动态(同时)多线程

  • -利用可能同时发生的指令(在Intel芯片上,这称为“超线程”);用于CPU绑定任务
    • 例如
a = b*c //Task 1
d = e*f //Task 2
g = a*d //Task 3

// Task 1 and 2 don't depend on each other, and hence can be run in parallel

问题

鉴于以上所述,如何在LabVIEW中控制用于执行任务(非多线程)的内核?

INTRO多处理=使用多个CPU内核来完成一项任务(每个内核具有单独的内存,因此需要每个内核的管道和数据结构才能彼此“交谈””)多线程= ...

multithreading multiprocessing labview
2个回答
0
投票
自NI LabVIEW版本8.5起,

定时循环


0
投票
LabVIEW固有地将数据流解析到多个处理器和多个线程,以达到与分析系统一样多的并行度。在几乎所有的情况下,您都应指定该代码的线程模型。对于实时系统,应严格考虑“定时循环”和“定时结构”功能,而不是在台式机系统(Windows,Mac或Linux)上执行。如果尝试指定线程模型,则几乎可以肯定会获得比编译器和运行时引擎已经计算出的复杂模型低的性能。
© www.soinside.com 2019 - 2024. All rights reserved.