LabVIEW驰骋多核技术时代

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:a4205685
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文主要介绍了专门针对多核应用而优化的全新LabVIEW软件,并详细介绍其开发优势。
  关键词:LabVIEW;多核;并行处理;并行编程
  
  多核时代的编程挑战
  
  众所周知,由于对芯片功率和热效应的制约,以往单纯通过提高主频来提高处理器运行速度的做法已经不再可行,一个新的架构已经逐渐成型,那就是多核。
  


  多核时代的来临已成为主流的发展趋势,在2006年的Intel开发者论坛上,Intel的CEO Paul Otellini向全世界展示了一个80核的原型,它可以在一秒内处理数以千兆字节的数据,那是非常惊人的处理能力,并且Intel希望在5年内将其推入消费市场。
  然而,这对于工程师和程序员们来说,意味着什么呢?
  在以往,程序开发人员们只需换上一块更高计算性能的处理器,就可以在无需任何代码修改的情况下,自动加快了每一行代码的执行速度。然而在如今的多核时代,这样的“免费午餐”已经结束了。如图1所示,即使是在一个4核处理器上,如果其应用只是单线程的话,操作系统仍旧会将所有的任务分配到其中一个核上运行,导致多核处理器无法得到充分的利用。因此,为了充分利用多核处理器,需要有新的编程方法。
  而这恰恰是一个巨大的编程挑战,针对这个问题,比尔盖茨也说过:“要想充分利用并行工作的处理器威力,……软件必须能够处理并发性问题。但正如任何一位编写过多线程代码的开发者告诉你的那样,这是编程领域最艰巨的任务之一。”
  总体而言,多核处理器编程存在以下几大难点:首先是并行的思考方式,比如要分辨出哪些任务是可以同时执行的,这并不是一件容易的事情,尤其对于习惯于顺序结构编程的开发人员来说,思考方式的转变往往需要花相当长的一段时间。
  其次是线程的创建和管理。开发人员把任务划分成多个并行步骤之后,就要通过线程的方式来编程实现。事实上,多线程编程是相当困难的,很多传统的编程语言都需要一组新的函数或结构来创建、同步、加解锁线程,这意味着工作量的增加。例如用C++写一个多线程的程序,程序员就必须要非常熟悉C++,了解如何将C++程序分成多个线程和任务间并发的同步,此外还要了解Windows多线程的机制,熟悉WindowsAPI的调用方法,或者MFC的架构等等;在C++上调试多线程程序,更是被许多程序员视为噩梦。
  


  最后,开发人员还需要自己考虑并行代码段之间哪些资源是不能共享的,比如文件、内存、硬件等等,否则会导致资源的冲突和争夺,使得并行线程因等待资源而暂停甚至死锁。
  以往基于文本的编程语言,由于其自身是一种顺序的编程模式,因此在对待并行编程时显得有些力不从心。虽然对于一些学习计算机编程或软件工程的专业开发人员来讲,使用文本语言在一个双核处理器中开发并行编程机制可能还不足以被难倒的话,那么当Intel推出80核处理器之后,其编程的复杂度相信任何开发人员都无法应付。因此,工程师和开发人员们都期待着一种更高效、更具创新的并行编程工具,能够协助他们顺利迎接多核时代的到来。
  
  LabVIEW-天生并行的编程语言
  
  LabVIEW就是这样一种驰骋多核技术时代的编程语言,可以帮助开发人员高效地享用多核技术所带来的益处。
  LabVIEW是一个基于数据流的图形化开发平台,它提供了直观的图形化编程方式和用户界面。与传统的文本编程相比,LabVIEW天生就是一种并行结构的编程语言。基于LabVIEW的数据流特性,如果连线中存在着分支,或者是框图中有着并行序列,那么后台的LabVIEW执行器就将自动地实现并行化运行,这种在计算机科学术语中叫做“潜在并行化”(图2)。例如,我们在LabVIEW下创建了多个循环,那么相对应的也就创建了数个新的执行线程,从而这些并行循环就会自动分配成多个线程分到多个处理核上,让LabVIEW开发人员享受到了多核处理器的性能优势。
  从单核到双核的处理器,理论上来说,获得的运算性能可以达到原先的两倍。但是,与这个极限值的接近程度取决于用户应用程序并行化运行的程度。使用LabVIEW,我们就可以方便地实现应用程序性能的改进,通过最少的编程调整,并行应用便可以获益于多核处理器。对于普通的LabVIEW应用程序而言,如果不考虑多核编程技巧,在不改写代码的情况下,与最初的基准程序相比,可以获得25%到35%性能上的提升,这也就意味着“免费的午餐”还没有结束。
  下面我们来看图3的简单例子。其中LabVIEW代码中的分支简化了两个分析任务——滤波操作和快速傅立叶变换(FFT),使它们可以在双核机器上并行化执行。首先程序在单核的模式下(关闭其中一个核)运行一次,然后在双核模式下运行。从图中可以看到,由于两项任务的计算量都很高,因此利用任务并行化获得的性能改进为原先的1.8倍。
  Windows操作系统是自动将线程分配到不同的核上,那么对于某些应用,如果有一个对时间要求非常高的线程,那么是否有办法能够保证它执行的确定性呢?
  使用LabVIEW就可以很好地解决这个问题,从而获得对于多核处理器更多的控制权。在LabVIEW中,工程师可以根据自身需求手动设置线程运行在特定的核上,例如将时间要求苛刻的采集与控制任务放在单独的核上运行,而将对确定性要求不高的界面响应、数据记录等任务放在另外一个核上运行(图4)。值得一提的是,实现这样的操作非常简单,就像放一个LabVIEW循环一样,只需放置一个定时循环(Timed Loop),再分配那个循环到指定的核上即可。
  作为一个典型的多核应用案例,德国的Max Planck研究院要实现针对核聚变能源的受控热核反应装置的等离子控制,这种高速控制需要将88个磁感应器上的大量数据转换为64×128个点格上的偏微分方程组,并要在短短的1ms内完成整个计算过程。最终他们使用LabVIEW在一个8核的系统上采用并行技术,将整个系统的运算速度提高了5倍,成功地达到了1ms闭环控制速率的要求,完成了这个“不可能的任务”。基于LabVl EW的并行编程
  LabVIEW自身所具有的并行特性使得开发人员可以不用花过多的时间放在多线程的创建、管理、同步、调试等底层实现过程上,而可以将主要精力聚焦在整个并行程序的高层架构上,这是能否高效利用多核处理器技术的关键所在。
  本节中将简单介绍针对多核的三种常用编程方式及其在LabVIEW下的实现方式。
  
  任务并行化(TaskParallelism)
  将整个程序分成多个线程来并发运行,是 并行编程的一个基本理念,那么通常一个程序都会由几个子任务组成,例如在某个测试测量程序中,就可以分为模拟采集和数字输出两个任务,那么如果我们将这些独立的任务并发地执行在多核处理器中,那么就自动提高了运行的效率。这种将独立的几个任务在程序中并发执行的方法,就叫做任务并行化。
  


  对于任务并行化,如何合理地去实现任务分配是需要解决的问题。首先,我们可以将本身就互相独立的任务分配在不同线程中,如上例所提到的模拟采集与数字输出任务,之间就没有任何的数据连接,因此在LabVIEW中我们就可以并行地将代码放在程序框图中,不需要添加任何其他代码,如图5所示。
  此外,编程中常见的生产者一消费者循环也是一种任务并行化,在LabVIEW下我们可以将生产者(读取数据)与消费者(分析数据)分成并行的两个任务,任务之间的数据交互可以使用队列结构(Queue)来实现,如图6所示。
  
  数据并行化(Data ParalIeIism)
  除了可以将程序任务进行并行化之外,对于一些海量数据的处理分析,我们还可以将数据分成几个可并行操作的小数据集,然后分别在各个核上实现并行处理,最后将结果整合起来作为整体数据集的处理分析结果,这种方式称为数据并行化。
  如图7(a)所示,一个大的数据集仅仅在一个核上进行处理和运算,当核1在处理数据时,其它的三个CPU核都处在闲置状态,整个系统的运行效率很低。
  那么,使用了数据并行化之后,如图7(b),之前的大数据集被分割成4个小数据集,并将它们在各自的核上进行处理运算,最终再将各自的运算结果整合起来作为大数据集的处理结果。经过了数据并行化之后,整个系统的运算效率有了直线的提升。
  与“任务并行化”类似,在LabVIEW下实现“数据并行化”也相当的直观与方便,图8就显示了一个矩阵相乘的代码,程序中将两个大矩阵各自分割成小矩阵进行相乘,最后再整合起来,仅仅这样一个简单的改变就可以在一个双核处理器上得到0.9倍的性能提高。
  


  
  流水线式(Pipeline)
  流水线,顾名思义,就是指将一系列的任务分割成固定的几个步骤,然后按照装配线的方式来执行。
  我们以一个最简单的汽车装配线为例,一辆车的装配完成需要3个步骤:底盘安装、零件安装以及上漆。如果每个步骤都需要花费1个小时的话,那么如果一次就装配一辆车的话,我们需要花3个小时来完成(图9a)。
  那么,如果我们换一种思路,分别对每个步骤设立一个工作站(例如工作站1就专门负责底盘安装,以此类推,如图9b)。这样一来,我们看到,当一辆车在上漆时,另外一辆车可能正在进行底盘安装。通过这种方式,我们成功实现了每一个小时就能完成一辆车的装配,是之前装配速度的3倍。这个例子中所说的工作站,其实就可以算作是CPU各个核,那么通过这种流水线的操作方式,就可以充分利用多核技术,大大提高整个程序的运行速率。
  而在LabVIEW下实现流水线式编程也是非常方便,图10就是一个最简单的4个步骤的流水线式代码,在一个For循环中,并行地执行4个处理步骤,系统将这并行的4个步骤放在不同的核上运行,从而起到“工作站”的作用,实现了流水线式的编程。
  


  综上所述,任务并行化、数据并行化以及流水线式是并行编程的三种最常用的方式,相对于以往的顺序结构,这些编程方式可以在多核处理器上发挥更强大的作用,而在LabVIEW下可以很方便地实现这些编程方式,从而帮助工程师们从多核处理器技术中得益,提升系统的性能和运算速度。
  
  结语
  
  随着新一代处理器技术的日益普遍,工程师与开发人员的一个必要考虑因素就是他们使用的软件如何从多核系统中获得潜在的性能提升。LabVIEW作为天生并行的图形化编程环境,可以自动将程序多线程化,避免了开发人员繁琐的底层实现,将主要精力投入在高层的编程模式上;而作为并行编程的三种常用模式(任务并行化、数据并行化以及流水线式),在LabVIEW下也都能高效地予以实现。因此,不容置疑的是,随着具有更多核的处理器不断涌现,LabVIEW将帮助开发人员真正迈入并行,驰骋多核技术时代!
其他文献
技术支持和解决方案开发能力早已成为授权分销商的核心竞争力,现在,其他类型的分销商也开始主打技术牌,希望依托先进的技术和完善的解决方案拓展电子分销业务。近期,派睿电子组建了新的全球技术服务中心(GTC),记者专门采访了派睿电子GTC总监Allen Tan,探寻组建GTC对派睿电子的意义。  大多数分销商他们自己的FAE,到客户端做技术方面的支持和推广。因为他们希望做比较大的客户。派睿的模式跟他们是完
期刊
飞思卡尔半导体推出QorIQ P4080多核处理器,一个旨在为嵌入式多核空间中的性能、功效和编程性设定新标准的非常先进的八核通信处理器。P4080多核处理器是飞思卡尔新QorIQ平台的标志性成员,基于45纳米处理技术。它集成了增强的PowerArchitecture内核、三级缓存分层、创新CoreNet片上结构和数据路径加速,可在最大30W的功率电路内提供卓著性能。QorIQP4080能够并行处理
期刊
三足鼎立    2008年中国移动已率先在各大城市建设TD-SCDMA网络,现在已进入试商用阶段。中国联通的CDMA网络已转到中国电信麾下。将来中国移动建设GSM、TD-SCDMA网络,中国电信建设CDMA2000、EVDO网络,中国联通建设GSM、WCDMA网络的格局已逐步清晰,三足鼎立之势渐成。如何快速、高质量地建设好一张符合3G用户需求的3G网络,成为各运营商、设计院、设备厂家共同关心的话题
期刊
摘要:本文介绍了基于PIC单片机、RF技术和无线数据传输技术的机械数码一体化防盗锁的设计。机械数码一体化防盗锁在传统锁具的基础上增加了一个受控的弹子,只能通过设置过的合法钥匙开启,并且增加了防盗报警功能。  关键词:机械数码一体化;PIC单片机;RHD;防盗锁    引言    机械锁和数码锁是我们日常生活中最常见的两种锁具。经过长期的发展,机械锁在技术上已经非常成熟,而且种类繁多。机械锁的主要特
期刊
摘要:为了满足航天医用冷藏设备监测系统的技术要求,研发了集数据采集、显示、监控为一体的监测系统。本文主要从硬件、软件两个方面对其进行研发。  关键词:医用冷藏设备;数据采集;监测系统。    引言    航天医用冷藏设备主要用于储存血液、试剂、疫苗等医学样品,是在特殊条件下对医学样品进行存储研究的冷藏设备。为了保证冷藏设备具备高的可靠性、稳定性,在开发过程中需要进行全面的实验测试,这就需要一种相匹
期刊
摘要:基于对我国铁路主要制式信号的典型参数特征的分析和研究,通过MATLAB仿真软件建立我国主要制式信号的数学模型,在重点解决边频精度、相位连续、差分放大等关键问题的前提下,提出采用DDS直接数字频率合成技术生成我国铁路专用2FSK(二进制频移键控)调制信号的新方法,并给出相关的硬件、软件设计。  关键词:铁路信号;直接数字频率合成;频移键控    “注:本文中所涉及到的图表、注解、公式等内容请以
期刊
摘要:通信芯片作为半导体行业最为活跃的市场应用之一,其发展趋势一直备受瞩目。本文分析了3G时期通信芯片的发展趋势。  关键词:3G;通信芯片;应用处理器;低功耗    随着电信运营商重组的尘埃落定以及北京奥运会的胜利召开之时,中国3G的推进过程终于在多年的期盼之后真正开始加速。据悉,除了现有的10城市TD测试网之外,估计在2009年2季度,消费者就可以享受到正式商用的3G服务。  虽然,中国3G演
期刊
为了提高产品的生产率和利润,近年来晶圆面积不断扩大,大约每10年升级一次。1991年业界开始投产200mm晶圆,2001年起步向300mm晶圆过渡,依次类推,ITRS(国际半导体技术发展路线图)和摩尔定律都认为,2012年是向走向450mm晶圆的元年。的确,少数巨型企业如Intel、三星和台积电表示了肯定的态度,为2012年过渡到450mm而做着准备,与制造设备、材料厂商开展协商以便供应设备和材料
期刊
摘要:本文详细探讨了LCD驱动技术的发展趋势及设计人员应注意的一些问题。  关键词:液晶显示器;驱动器;薄膜晶体管    “LCD Driver”是一个范畴相当广的话题,LCD 的驱动类型大体可区分成TN(Twisted Nerrtatic)、STN(Super-TwistedNematic)以及TFT(Thin-Fikn Transistors)等三类,其中TN LCD多使用在仪器仪表等简单的对
期刊
从应用为中心,到以客户为中心    IC业的经营模式经历了三个阶段:最早以产品为中心,多年前过渡到了以应用为中心,目前是以客户为中心。每个阶段各有其特点:以产品为中心时,一款产品适合多个用户,因此IC供应商提供通用的解决方案,并主要在技术和电路上创新;以应用为中心时,一种应用适合多个用户,IC供应商主要提供专用解决方案,进行应用需求的创新;以用户为中心阶段时,一个用户需要多款产品,因此芯片供应商需
期刊