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

虚拟仪器

25人已加入

描述

 

 

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

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

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

LabVIEW

 

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

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

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

LabVIEW

 

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

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

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

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

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

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

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

LabVIEW

 

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

数据并行机制
数据并行是一种常用编程模式;您能拆分大块数据并在融合结果之前同时处理各个部分。 注意:上述代码中数据通道的拆分、处理和重新组合。

LabVIEW

 

图4. 数据并行机制的范例

流水线技术
流水线技术代表一类操作流水线,其中的函数反复执行并且将它们的数据传递至下一项操作来完成下一个循环。 在LabVIEW中,流水线技术可用被称为反馈节点的单位延迟。

LabVIEW

 

图5. 流水线技术的范例

大多数实际应用程序(如:射频信号处理和图像分析),提供这些内容和其他并行编程模式的集合。 例如,您能在一个LabVIEW程序框图中执行多条流水线,同时代表任务并行机制和流水线技术。 凭借LabVIEW,您能通过直观显示并行代码,优化面向多核处理器的应用。

强大的图形化调试工具
调试是开发各类应用程序时的一个重要环节,LabVIEW同时包含内置图形化调试功能和针对附加工具的连接,有助了解并行程序操作。 例如,借助LabVIEW中的高亮执行功能,您能同时观察操作和并行数据流中数据的流动和执行,LabVIEW桌面执行跟踪工具包显示应用事件的确切顺序。 此外,在运行实时操作系统的LabVIEW硬件目标上,NI实时执行跟踪工具包显示哪个线程运行在哪个CPU内核并配有详细时间信息的完整编程历史——帮助您辨识并修正优先级倒置等问题;其中,使用共享资源的低优先级任务总是等候更高优先级任务。 能够查看哪些线程、何时、在哪个内核上在运行,以及它们访问哪些资源,意味着您无需揣测就能调试性能和可靠性。

解决最富挑战的工程问题
除了对多核CPU编程,您还能搭配使用LabVIEW和其他并行硬件(包括:FPGA、图形化处理单元,乃至计算云)。 这些硬件平台都有各自独有的特征、优势和折衷;LabVIEW能够帮助工程师与科学家利用适合工作的平台。 由于LabVIEW针对这些不同的硬件部分,您能采用图形化编程处理具有不同并行处理需求的多类项目。

事实上,探究行星上某些最复杂工程问题(从搜寻聚变,到控制世界上最大的天文望远镜)的研究者,正结合LabVIEW与各类并行硬件目标实现应用。 最终,LabVIEW出面帮助各个领域的专家快速将理念转换为有用的程序。 由于LabVIEW能够采用直观的图形化代码自动利用多核处理器,您能继续使用最新的并行硬件来克服新一代的工程挑战。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分