Multithreading LabVIEW如何处理多处理和多线程?
简介 多处理=使用多个CPU核来完成一项任务(每个核都有单独的内存,因此每个核需要管道和数据结构来相互“对话”) 多线程=使用多个线程(位于单个CPU内核上)和任务调度器来完成任务(所有线程在CPU内核上共享相同的内存)Multithreading LabVIEW如何处理多处理和多线程?,multithreading,multiprocessing,labview,Multithreading,Multiprocessing,Labview,简介 多处理=使用多个CPU核来完成一项任务(每个核都有单独的内存,因此每个核需要管道和数据结构来相互“对话”) 多线程=使用多个线程(位于单个CPU内核上)和任务调度器来完成任务(所有线程在CPU内核上共享相同的内存) 静态(临时)多线程通过在缓存未命中期间(即等待读取/写入I/O设备)将任务按顺序安排而不暂停,利用空闲I/O时间;用于I/O绑定任务 动态(同步)多线程利用可同时发生的指令(在英特尔芯片上,这称为“超线程”);用于CPU限制的任务 e、 g 问题 鉴于上述情况,如何在L
- 静态(临时)多线程通过在缓存未命中期间(即等待读取/写入I/O设备)将任务按顺序安排而不暂停,利用空闲I/O时间;用于I/O绑定任务
- 动态(同步)多线程利用可同时发生的指令(在英特尔芯片上,这称为“超线程”);用于CPU限制的任务
- e、 g
LabVIEW固有地将数据流解析到多个处理器和多个线程,以达到系统分析时所能达到的并行度。几乎没有任何情况需要指定代码的线程模型。对于实时系统,应严格考虑定时循环和定时结构功能,而不是r在桌面系统(Windows、Mac或Linux)上的执行。如果您试图指定线程模型,几乎肯定会比编译器和运行时引擎已经计算的复杂模型获得更低的性能。LabVIEW固有地将数据流解析到多个处理器和多线程,使其与系统分析时的并行度相同。几乎有零情况下,您应该指定代码的线程模型。应严格考虑实时系统的定时循环和定时结构功能,而不是在桌面系统(Windows、Mac或Linux)上执行。如果您试图指定线程模型,您几乎肯定会得到比编译器和运行时引擎已经计算的复杂模型更低的性能。不过,这是理论。事实上,LV几乎只使用一个CPU。@sweber和大多数应用程序一样,因为交叉CPU效率更低。如果可能,可以避免。是的,虽然LV是一种编程语言,应该允许并行编程。我们有一个相当大的项目,分为几个任务。它们通过队列进行通信,这使得它非常适合多CPU机器。但是,它只支持一个。我的应用程序一直都支持多个CPU。不过,这是理论。实际上,LV基本上只支持一个CPUCPU。@sweber和大多数应用程序一样,因为交叉CPU效率较低。尽可能避免交叉CPU。是的,尽管LV是一种编程语言,应该允许并行编程。我们有一个相当大的项目,分为几个任务。它们通过队列通信,这使得它非常适合多CPU机器。但是,它只支持一个。我的apps始终跨越多个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