当前位置:文档之家› 基于多核CPU的并行计算设计

基于多核CPU的并行计算设计

26/3192294长春工程学院学报(自然科学版)2009年第10卷第3期J.Changchun I nst .Tech .(Nat .Sci .Edi .),2009,Vol .10,No .3I SS N 100928984CN 2221323/N基于多核CP U 的并行计算设计收稿日期:2009-03-03作者简介:谷照升(1965-),男(汉),吉林集安,教授主要研究:数学应用。

谷照升(长春工程学院理学院,长春130012)摘 要:通过多核CP U 上多线程运算的效率分析,给出了相应的并行计算设计方案,并讨论了并行计算的发展趋势。

关键词:并行计算;多线程;多核中图分类号:TP316文献标识码:A文章编号:100928984(2009)03200922030 引言在科学研究、工程计算的诸多领域,如凝聚态物理、数据挖掘、航天技术等,经常存在大规模的计算需求。

这些计算任务有时还需要一定的实时性。

由于单台计算设备处理能力的局限性,并行计算成为解决这类问题的主要技术手段。

迄今为止,并行计算主要的实现模式是将一个较大的运行任务同时并行地分配到多个计算机上执行[1,2]。

由于各种大型计算一般采用的多是相应专业的商业化通用软件,而这些软件在设计上都是基于这种并行分布式系统,通过网络构架,以相对较低性能的微机机群获取高效率的计算能力,所以其综合运行需要依赖完善的接口、协议支持[1—4]。

其中,MP I (Message Passing I nterface )是国内外在高性能计算系统中使用最广泛的并行编程的消息传递接口标准。

这一标准移植性好、功能强大、效率高,有上百个函数调用接口,可以在各种提供外部扩展接口的高级编程语言中直接调用。

近几年计算机硬件技术与性能有了飞速的发展,多核、大内存乃至双CP U 的微机配置已成为主流。

与此同时,W in2000以后的MS 系列操作系统对多核CP U 以及双CP U 资源也提供了完美的支持。

而传统的面向机群的并行计算设计却无法利用多核CP U 所带来的硬件优势。

针对这一背景,如何更好地利用单机良好的CP U 多核资源,充分提高大型计算的性能和效率,就成为应该认真对待的问题。

1 基于多线程技术的并行计算1.1 单机多核CP U 环境下的计算性能分析为检验操作系统对多核CP U 的支持水平,笔者编制了专门的测试程序。

该程序在W indows XP 下分别对2、3、4个线程、无多线程(只有程序进程自身的主线程)4种情况,每个线程完成完全相同的一个较大的计算任务进行测试,只有程序主线程时也对应相同任务。

各线程同时开始,详细记录各线程开始、结束、总的耗时,精确到m s 。

之后,又同时运行2个本测试程序,用计时器控件控制每个程序,同时启动仅用主线程的相同计算,并记录各自的耗时。

在不同主频的2台I ntel 双核、2台I ntel 单核的单CP U 微机上分别做同样的测试。

为观测CP U 的使用率,测试过程中除系统本身和测试程序外,不运行其它程序。

测试结果见表1。

多机多次实际测试发现,即使是双核双线程模式,每个线程的耗时也不完全相等,但相差基本在100m s 以内,所以表1中多采用“≈”表示。

图1给出了I ntel 双核主频1.60GHz CP U 的Dell 笔记本上3个线程和主线程的测试结果。

图1 3个线程和主线程的测试结果表1 测试结果汇总CP U类型线程数任务总量各线程耗时总耗时同步程度说明CP U使用率1Q T T仅主线程50%22Q T1,T2Max(T1,T2)≈T T1≈T2同步结束100%双核33Q T1,T2,T3Max(T i)≈1.5T,i=1,2,3T i≤T j≈T k,i,j,k为1,2,3的一个排列1个提前结束,另2个同步结束100%44Q T i,i=1,2,3,4≈2T T i≈2T同步结束100%单核a=1,2,3,4aQ T a≈a T T a≈aT同步结束100% 根据实测结果,对完全用于计算任务状态的机器而言,可以给出下列结论:(1)对具有n核的CP U,采用m个线程并行计算,则只有当m≥n时,CP U的使用率才可以达到100%。

(2)对单核CP U(n=1),采用多线程(m>1)并行计算,不会降低运行效率。

或者说,增加线程数,不会影响计算效率。

(3)采用多线程(m>1)并行计算时,若要实现较好的过程同步,m应取n的整数倍。

(4)采用多线程并行计算时,每个线程所分配的任务量应尽可能相等。

(5)采用多进程(同时运行多个程序)并行计算时,从任务耗时和CP U使用率看,与多线程具有相同的结论,但由于操作系统对每个进程要分配独立的地址空间并加以管理,这导致了内存开销的增加。

当内存资源紧张时,各进程使用虚拟内存的概率会显著提高。

一旦不得不使用虚拟内存,运行效率将受到极大限制。

(6)多次测试还发现,使用默认的优先级,由于各线程的运行在一个进程中是相互独立的,对CP U 的分享也是对等的,而每个线程在完成自身计算任务时,一般又不涉及消息处理,所以各线程的耗时均小于主线程耗时,但时差均在0.5s内。

1.2 多线程技术并行计算的设计方法与优势基于32位、64位W indo ws系统上的多线程编程,主要通过系统的AP I实现。

目前的主要编程语言工具对此都已做了很好的封装。

例如,在Del phi 中,通过继承TThread类,即可建立自己的一个线程类。

T CalculateThread=class(TThread)p rivatep r otected p r ocedure Execute;override;public startTi m e,endTi m e:T Dateti m e; …… construct or Create(CreateSus pended:Boolean; var Edit_:TEdit;end_,which_:integer); p r ocedure free;end;编程的主要工作是对“p r ocedure Execute;over2 ride;”方法填写您所需要的代码。

线程运行的机理是:一经创建一个线程类的实例,该实例可根据CreateSus pended决定立即执行或由指令Resume开始执行p r ocedure Execute的运行代码。

这为我们进行程序移植或修改提供了极大的方便,原有的大量面向机群的并行计算代码可以更容易改为多线程并行计算代码。

需要修改的主要是数据共享与交换部分,而面向MP I的代码则可以完全删除了。

由于多线程计算仍然处于同一操作系统,因而线程间的协调有更灵活的控制机制:可以使用系统内部的消息传递,也可以使用全局变量作标记识别,还可以通过自定义事件来响应各线程进度状态。

因为多线程并行计算是基于单机实现的,而单机存在内存资源的瓶颈限制,所以,在进行多线程并行计算编程时,各线程的计算模块所使用的大块数据应尽可能采用地址参数传递。

需要注意的是,一个线程完成其计算任务后,并不会自动释放该实例,需要在程序中通过调用其析构方法删除实例以回收所占内存资源。

改造性移植的具体实现方法是,将原有分派到机群系统中各结点(工作站)的任务规划为适当的数目,修改结点程序的数据结构与接口,并将相应的计算代码封装到线程类的执行方法“p r ocedure Exe2 cute;override;”中,选择合适的各线程协作控制方案完成任务的整体进度调度。

比较而言,传统的机群并行计算设计的优点是:能够充分利用闲散设备资源,并有着成熟的软件和技术支持。

主要缺点在于:不易时间同步以至于那些性能相对较好的机器在某些步骤因等待而降低其39 谷照升:基于多核CP U的并行计算设计使用效率;编程设计烦琐,整体协调、调度复杂;需要网络环境支持;对日渐普及的多核计算设备,不能加以有效利用;更重要的是,机群并行计算设计的系统中一旦某台工作站运行失败,会导致整个系统在相应环节不得不延时等待甚至整体放弃。

多核CP U 单机上采用多线程并行计算的优点是:时间同步,简化接口设计,减少整体协调与调度开销,有效提高效率。

不足之处是缺少足够的软件支持,并受单机物理内存资源的限制。

2 发展趋势分析近年来,随着物理制作工艺技术的局限,仅靠提高CP U的频率来获取更高的运算速度已经非常困难,多核、多CP U方案已逐步成为微机的普及型配置。

若以办公、娱乐等为主要用途,操作系统本身按多进程自然实现了多核、多CP U带来的性能优势。

但以大型科学计算为主要任务的设备却难以有效地利用这些硬件资源,而正是这些作业,更需要高速的计算性能支持。

所以,改进现有的各种大型科学计算程序以充分发挥多核优势,是并行计算发展的大趋势。

不久前,微软发布了Parallel Extensi ons f or the .NET Fra me work3.5,其中包含了一个核心的任务并行库Task Parallel L ibrary(TP L),对许多数学计算提供了可能的并行支持。

但这一支持只是“可能”,因为各种科学计算有其自身的复杂性,要真正实现并行,只有程序员本身透明地给出相应的计算结构,才是最可靠的保障。

TP L的发布,充分反映了针对多核采用并行计算这一发展趋势,也为此提供了一定的技术模式或构架。

前文已经指出,这种基于多线程的并行设计,即使在单核CP U上,也并不影响整体计算性能或效率,所以它是完全向前兼容的。

一个好的程序应该对每一个独立的耗时明显的允许计算并行处理的模块(如某些矩阵运算)尽可能采用多线程并行计算,并由此逐步形成新的代码库,从而完成对传统程序的彻底改造。

另一方面,针对多核的多线程设计,与现有的机群式并行计算并不存在矛盾或冲突。

因为多线程是针对本机的一个独立任务的程序设计,它依然可以作为机群并行计算的一个工作站,完成其自身承担的计算任务,只是完成的速度更快了。

当然,多核的支持,比如2×4核CP U,在多线程模式下,其能力可能已经远胜于一个用于并行计算的机群,使得一个原来很庞大的计算任务,已不再需要传统的复杂的并行计算。

这样看来,大量中小规模的传统机群并行计算将由单机实现,而现在超大型的各种并行计算系统,在每个工作站都进一步采用了多线程技术后,其整体速度会成倍提高。

当年,“千年虫”导致大量软件系统包括开发工具“不得已”进行一次全面升级。

如今,面对多核硬件优势,以工程计算为主要任务的各种专业软件对某些设计加以改进,则是“义不容辞”。

参考文献[1]赵庶旭,朱正平,孙传庆.基于MP I的并行计算系统构建及评测[J].兰州交通大学学报(自然科学版),2004,23(04):91—93.[2]何素贞,李书平,吴晨旭.高性能计算集群系统的设计和实现[J].厦门大学学报(自然科学版),2004,43(06):879—881.[3]吕捷,张天序,张必银.M P I并行计算在图像处理方面的应用[J].红外与激光工程,2004,33(05):496—499. [4]陈翔,刘金刚.一种适合于并行计算的新方法———相对标准法[J].计算机工程与应用,2002,24:91—93.D esi gn for m ulti kernel CPUba sed para llel com puti n gG U Zhao-sheng(Faculty of B asic Courses,Changchun Institu teof Technology,Changchun130012,China)Abstract:The parallel computing p r ogra m with multi2 kernel CP U was put f or ward by analysis of multithread2 ed operati on efficiency in multi2kernel Pr ocess or,and the devel opmental trend of parallel computing were dis2 cussed.Key words:parallel computing;multithread;multi2ker2 nel49长春工程学院学报(自然科学版)2009,10(3)。

相关主题