基于NI LabVIEW图形化编程对多核处理器和其他并行硬件进行编程

基于NI LabVIEW图形化编程对多核处理器和其他并行硬件进行编程,第1张

 

 

NI LabVIEW图形化编程方法不仅省时,还很适合对多核处理器和其他并行硬件[如:现场可编程门阵列(FPGA)]进行编程。 其中一项优势是:通过2个、4个或更多核将应用程序自动扩展至CPU,通常无需更多编程努力。 此外,图形化LabVIEW代码还有助工程师与科学家可视化显示并行 *** 作,因为它天生代表工业和院校采用的最流行并行编程模式。

并行编程的挑战
并行编程正很快成为用来构建大多数多核处理器的必要。 出于许多原因(包括:能耗与内存带宽),现代处理器具有非常迟滞的时钟频率;CPU制造商却开始在单芯片上纳入多个处理器内核同时维持乃至降低时钟频率。 因为不能仰赖时钟频率的增加来自动加速应用程序,现在您必须设计出在多核处理器上运行的应用程序。 未来,如果您不花时间优化针对多核处理器的应用程序,可能发现性能出现减退。

为解决这项挑战,许多工具被用来帮助您创建能够利用多核处理器的代码。 您能手动地将代码块分配至线程;这样,许多 *** 作系统都可以将这些线程扩展到不同的处理器内核上。 然而,管理这些线程费时而且困难。 此外,各种语言和API对部分关乎线程的工作进行抽象,但它们仍需要您确切指定能够并行运行的 *** 作类型。

基于NI LabVIEW图形化编程对多核处理器和其他并行硬件进行编程,图1. CPU时钟频率停止增长;多核处理器的性能现在得到提升。,第2张

 

图1. CPU时钟频率停止增长;多核处理器的性能现在得到提升。

自动利用多核处理器
在LabVIEW中编程涉及到创建类似流程图的图形化代码(G),这与使用传统的顺序语言进行编程迥然不同。 这被称为数据流编程。 LabVIEW程序不编写逐个执行的命令序列,而包含将一个变量连至下一个的变量与运算符——LabVIEW编译器自动确定命令的先后顺序以便执行继而产生正确的结果。 这也意味着:借助LabVIEW,代码的两个并行部分在相互独立时,能够在一个多核处理器的不同核上同时运行。

如需视觉化显示该部分,请考虑图2中简单的算术程序。LabVIEW会认为:不论是乘与加函数还是减函数,都能同时执行;它们不会相互依赖着执行。

基于NI LabVIEW图形化编程对多核处理器和其他并行硬件进行编程,图2. 独立的代码路径可同时执行。,第3张

 

图2. 独立的代码路径可同时执行。

LabVIEW编译器可辨识程序框图上许多不同的并行代码,并在运行的同时将那些部分映射至数量固定的线程。 这能防止您手动处理线程细节,同时避免创建过多可能危及性能的线程。

手动线程创建
LabVIEW自动处理线程并利用多核处理器的能力,并不意味着:您在需要时无法控制此事。 例如,您或许希望独立一项特定任务,如:专用、优先级线程中的紧急状态监控。 LabVIEW定时结构包含定时循环,每个都能创建一个供结构内代码运行的单一线程,并能够通过在开发期间或者运行时设置处理器亲和度选项被分配到特定处理器内核。 凭借LabVIEW,您无需放弃在必要时对低层的访问,就能聚焦在自己全力解决的问题上,而不是花时间将代码映射至多核处理器。

交互显示并行代码
LabVIEW在利用多核CPU时具备另一项重要优势: 并行代码的直观图形化表现。 当您能使用传统的顺序语言来创建并行程序时,持续跟踪并行 *** 作会是一项艰巨挑战。 此外,由于开发者往往联手创建大型应用程序,破解他人编写的并行代码甚至比破解您自己的代码更困难。

相反,LabVIEW数据流编程方式带来一种最基本的通信形式——流程图。 多年来,顺序编程人员一直通过创建流程图来记录程序元素并且相互通信。 不用将流程图诠释为顺序代码或者反其道而行,您能在图形化数据流代码中直接执行理念。 您还能快速辨识运行在不同处理器内核上的并行代码路径。

LabVIEW图形化代码直观地代表了工业和院校采用的最常见并行编程模式。 某些流行模式包含:任务并行机制、数据并行机制和流水线 *** 作。 

任务并行机制
任务并行机制代表:2个或更多能够并行执行的单独 *** 作。 在右方的LabVIEW代码中,请注意:滤波器和快速傅立叶变换(FFT)的 *** 作并不相互依赖,所以它们能在多个处理器内核上同步执行。

基于NI LabVIEW图形化编程对多核处理器和其他并行硬件进行编程, 图3. 任务并行机制的范例,第4张

 

图3. 任务并行机制的范例

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/dianzi/2644122.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-08-12
下一篇2022-08-12

发表评论

登录后才能评论

评论列表(0条)

    保存