26/3192.94长春工程学院学报(自然科学版)2009年第10卷第3期J.ChangchtmInst.Tech.(Nat.Sci.Edi.),2009,V01.10,No.31望盟!Q塑望竺坠CN22.1323/N基于多核CPU的并行计算设计谷照升(长春工程学院理学院,长春130012)摘要:通过多核CPU上多线程运算的效率分析,给出了相应的并行计算设计方案,并讨论了并行计算的发展趋势。关键词:并行计算;多线程;多核中图分类号:TP316文献标识码:A文章编号:1009-8984(2009)03-0092-03在科学研究、工程计算的诸多领域,如凝聚态物于单台计算设备处理能力的局限性,并行计算成为迄今为止,并行计算主要的实现模式是将一个J。由于各种大型计算一般采用的多是相应专于这种并行分布式系统,通过网络构架,以相对较低PassingInterface)是国内外在高性能近几年计算机硬件技术与性能有了飞速的发主要研究:数学应用。万方数据基于多线程技术的并行计算单机多核CPU环境下的计算性能分析为检验操作系统对多核CPU的支持水平,笔者XP下多机多次实际测试发现,即使是双核双线程模GHzCPU的Dell笔记本上图l3个线程和主线程的测试结果多核CPU所带来的硬件优势。针对这一背景,如何更好地利用单机良好的CPU多核资源,充分提高大型计算的性能和效率,就成为应该认真对待的问题。11.10引言理、数据挖掘、航天技术等,经常存在大规模的计算需求。这些计算任务有时还需要一定的实时性。由解决这类问题的主要技术手段。较大的运行任务同时并行地分配到多个计算机上执行¨'2业的商业化通用软件,而这些软件在设计上都是基性能的微机机群获取高效率的计算能力,所以其综合运行需要依赖完善的接口、协议支持¨一J。其中,MPI(Message编制了专门的测试程序。该程序在Windows分别对2、3、4个线程、无多线程(只有程序进程自身的主线程)4种情况,每个线程完成完全相同的一个较大的计算任务进行测试,只有程序主线程时也对应相同任务。各线程同时开始,详细记录各线程开始、结束、总的耗时,精确到ms。之后,又同时运行2个本测试程序,用计时器控件控制每个程序,同时启动仅用主线程的相同计算,并记录各自的耗时。在不同主频的2台Intel双核、2台Intel单核的单CPU微机上分别做同样的测试。为观测CPU的使用率,测试过程中除系统本身和测试程序外,不运行其它程序。测试结果见表1。式,每个线程的耗时也不完全相等,但相差基本在lOOms以内,所以表l中多采用“*”表示。图1给出了Intel双核主频1.60计算系统中使用最广泛的并行编程的消息传递接口标准。这一标准移植性好、功能强大、效率高,有上百个函数调用接口,可以在各种提供外部扩展接口的高级编程语言中直接调用。展,多核、大内存乃至双CPU的微机配置已成为主流。与此同时,Win2000以后的MS系列操作系统对多核CPU以及双CPU资源也提供了完美的支持。而传统的面向机群的并行计算设计却无法利用收稿日期:2009—03—03作者简介:谷照升(1965一),男(汉)。吉林集安,教授3个线程和主线程的测试结果。谷照升:基于多核CPU的并行计算设计93根据实测结果,对完全用于计算任务状态的机器而言,可以给出下列结论:(1)对具有,l核的CPU,采用巩个线程并行计算,则只有当m≥,l时,CPU的使用率才可以达到100%。(2)对单核CPU(,l=1),采用多线程(m>1)并行计算,不会降低运行效率。或者说,增加线程数,不会影响计算效率。(3)采用多线程(m>1)并行计算时,若要实现较好的过程同步,m应取凡的整数倍。(4)采用多线程并行计算时,每个线程所分配的任务量应尽可能相等。(5)采用多进程(同时运行多个程序)并行计算时,从任务耗时和CPU使用率看,与多线程具有相同的结论,但由于操作系统对每个进程要分配独立的地址空间并加以管理,这导致了内存开销的增加。当内存资源紧张时,各进程使用虚拟内存的概率会显著提高。一旦不得不使用虚拟内存,运行效率将受到极大限制。(6)多次测试还发现,使用默认的优先级,由于各线程的运行在一个进程中是相互独立的,对CPU的分享也是对等的,而每个线程在完成自身计算任务时,一般又不涉及消息处理,所以各线程的耗时均小于主线程耗时,但时差均在0.5s内。1.2varconstructorCreate(CreateSuspended:Boolean;EdiL:,rEdit;end一,which一:integer);procedurefree;end;编程的主要工作是对“procedureride;”方法填写您所需要的代码。Execute;over-线程运行的机理是:一经创建一个线程类的实例,该实例可根据CreateSuspended决定立即执行或由指令Resume开始执行procedureExecute的运行代码。这为我们进行程序移植或修改提供了极大的方便,原有的大量面向机群的并行计算代码可以更容易改为多线程并行计算代码。需要修改的主要是数据共享与交换部分,而面向MPI的代码则可以完全删除了。由于多线程计算仍然处于同一操作系统,因而线程间的协调有更灵活的控制机制:可以使用系统内部的消息传递,也可以使用全局变量作标记识别,还可以通过自定义事件来响应各线程进度状态。因为多线程并行计算是基于单机实现的,而单机存在内存资源的瓶颈限制,所以,在进行多线程并行计算编程时,各线程的计算模块所使用的大块数据应尽可能采用地址参数传递。需要注意的是,一个线程完成其计算任务后,并不会自动释放该实例,需要在程序中通过调用其析多线程技术并行计算的设计方法与优势基于32位、“位Windows系统上的多线程编构方法删除实例以回收所占内存资源。改造性移植的具体实现方法是,将原有分派到机群系统中各结点(工作站)的任务规划为适当的数目,修改结点程序的数据结构与接口,并将相应的程,主要通过系统的API实现。目前的主要编程语言工具对此都已做了很好的封装。例如,在Delphi中,通过继承TYhread类,即可建立自己的一个线程类。TCalculateThread=class('lThread)privateprotectedprocedureExecute;override;publicstartTime,endTime:TDatetime;计算代码封装到线程类的执行方法“procedure完成任务的整体进度调度。Exe—cute;override;”中,选择合适的各线程协作控制方案比较而言,传统的机群并行计算设计的优点是:能够充分利用闲散设备资源,并有着成熟的软件和技术支持。主要缺点在于:不易时间同步以至于那些性能相对较好的机器在某些步骤因等待而降低其万方数据长春工程学院学报(自然科学版)使用效率;编程设计烦琐,整体协调、调度复杂;需要网络环境支持;对日渐普及的多核计算设备,不能加以有效利用;更重要的是,机群并行计算设计的系统中一旦某台工作站运行失败,会导致整个系统在相应环节不得不延时等待甚至整体放弃。多核CPU单机上采用多线程并行计算的优点是:时间同步,简化接口设计,减少整体协调与调度开销,有效提高效率。不足之处是缺少足够的软件支持,并受单机物理内存资源的限制。2发展趋势分析近年来,随着物理制作工艺技术的局限,仅靠提高CPU的频率来获取更高的运算速度已经非常困难,多核、多CPU方案已逐步成为微机的普及型配置。若以办公、娱乐等为主要用途,操作系统本身按多进程自然实现了多核、多CPU带来的性能优势。但以大型科学计算为主要任务的设备却难以有效地利用这些硬件资源,而正是这些作业,更需要高速的计算性能支持。所以,改进现有的各种大型科学计算程序以充分发挥多核优势,是并行计算发展的大趋势。不久前,微软发布了ParallelExtensionsforthe.NETFramework3.5,其中包含了一个核心的任务ParallelLibrary(TPL),对许多数学计算提供了可能的并行支持。但这一支持只是“可能”,因为各种科学计算有其自身的复杂性,要真正实现并行,只有程序员本身透明地给出相应的计算结构,才是最可靠的保障。TPL的发布,充分反映了针对多核采用并行计即使在单核CPU上,也并不影响整体计算性能或效率。所以它是完全向前兼容的。一个好的程序应该的彻底改造。另一方面,针对多核的多线程设计,与现有的机万方数据作为机群并行计算的一个工作站,完成其自身承担的计算任务,只是完成的速度更快了。当然,多核的支持,比如2x4核CPU,在多线程模式下,其能力可能已经远胜于一个用于并行计算的机群,使得一个原来很庞大的计算任务,已不再需要传统的复杂的并行计算。这样看来,大量中小规模的传统机群并行计算将由单机实现,而现在超大型的各种并行计算系统,在每个工作站都进一步采当年,“千年虫”导致大量软件系统包括开发工[1]赵庶旭,朱正平,孙传庆.基于MPI的并行计算系统构建及评测[J].兰州交通大学学报(自然科学版),2004,23(04):91—93.[2]何素贞,李书平,吴晨旭.高性能计算集群系统的设计和实现[J].厦门大学学报(自然科学版),2004,43(06):879—881.应用[J].红外与激光工程,2004,33(05):496_499.标准法[J].计算机工程与应用,2002,24:91q3.DesignformultikernelCPUbasedparallelcomputingGUZhao—-sheng(FacultyofBasicCourses,ChangchunInstituteofTechnology,Changchun130012,China)parallelcomputingprogramwithmulti—CPUwasputforwardbyanalysisofmuhithread—operationefficiencyinmulti—kernelProcessor,anddevelopmentalfiendofparaUelcomputingweredis-words:parallelcomputing;muhithread;multi-ker-liel用了多线程技术后,其整体速度会成倍提高。具“不得已”进行一次全面升级。如今,面对多核硬件优势,以工程计算为主要任务的各种专业软件对某些设计加以改进,则是“义不容辞”。参考文献[3]吕捷,张天序,张必银.MPI并行计算在图像处理方面的[4]陈翔,刘金刚.一种适合于并行计算的新方法——相对并行库Task算这一发展趋势,也为此提供了一定的技术模式或构架。前文已经指出,这种基于多线程的并行设计,对每一个独立的耗时明显的允许计算并行处理的模块(如某些矩阵运算)尽可能采用多线程并行计算,并由此逐步形成新的代码库,从而完成对传统程序群式并行计算并不存在矛盾或冲突。因为多线程是针对本机的一个独立任务的程序设计,它依然可以Abstract:Thekemeledthecussed.Key