并行编译中的代码生成和通讯优化

并行编译中的代码生成和通讯优化

戴晓如[1]2000年在《并行编译中的代码生成和通讯优化》文中进行了进一步梳理并行编译系统为多处理机系统上的软件开发提供重要支持,是多处理机系统的重要组成部分之一。本文从理论上阐述了并行编译系统后端—并行代码的生成原理,介绍分布式存贮多处理机系统上Fortran语言的并行识别系统Autopar的实现,阐述了并行代码生成的关键技术。Autopar对不存在体间依赖的循环进行并行处理,为串行Fortran语言的程序生成SPMD(单程序多数据)并行程序。 通讯是影响并行编译器生成的并行程序性能的重要因素。Autopar生成必要的通讯函数,并且考虑了分布式存贮系统上的几种通讯优化技术,包括消息向量化、消息合成、通讯与计算重叠等。

王淼[2]2010年在《面向多核处理器的并行编译及优化关键技术研究》文中研究指明传统的单核处理器通过提高运行频率来提高计算性能。然而,单纯增加晶体管数目不仅耗用大量晶体管资源,而且随着时钟频率不断攀升,微处理器的功耗也迅速增加。提高芯片性能和减少能耗成为矛盾,单核处理器的性能提升已成为瓶颈。为解决这一问题,多核结构的设计思想应运而生。通过在单个芯片上集成多个高效内核,就可以在保持工作频率的条件下实现性能的提升,以获得更高的能效。多核处理器按照集成的处理器核的种类分为同构多核处理器和异构多核处理器。异构多核处理器将不同类型的内核集成在一起,在效率和性能方面往往要优于同构多核处理器。目前,异构多核处理器在加速实际应用方面获得了很高的性能,相关技术已被逐渐运用到新型高性能计算机中。异构多核处理器的特征为高性能并行计算提供了巨大潜力,但是,异构多核处理器在并行编程、存储层次管理等方面都很复杂,另外,在自动并行工具以及软件通用性方面仍有很多难题亟待解决,如何充分利用异构多核对编程模型和编译技术都提出了很大挑战。本文重点围绕异构多核编译系统设计及优化等问题进行研究,本文所提出的编译方法不仅适应于特定异构多核处理器,也适应于其他异构多核处理器系统。本文的主要工作和技术创新概述如下:(1)提出了面向异构多核处理器的代码自动生成框架。以异构多核处理器Cell为实例,基于分布式存储模型为Cell处理器设计并实现了一个源到源编译器。该编译器利用数据对齐、数据分布等技术将程序中的数据自动划分到不同的处理器核中,并根据不同数据分布机制为应用程序插入通讯原语,生成不同版本的可在Cell上运行的SPMD(Single Program Multiple Data)并行程序。首次在Cell上实现了一个高效的多核通讯库,该库包括send/recv、shift和transpose等通讯原语,通讯协议基于Cell的mailbox机制实现。最后,通过实验验证了编译器的有效性和性能,同时与IBM XL C/C++ OpenMP编译器进行了比较,证明了与共享存储编程模型相比,分布式存储编程模型更适于Cell等异构多核处理器。(2)提出了面向异构多核处理器的数据自动管理框架。针对协处理器核局部存储器容量无法满足大数据规模应用的问题,本文提出并实现了一个数据自动管理系统,该系统通过分级数据分布、通讯生成和循环分块等方法对程序中的数据和计算进行分解,使得分解后的数据能够满足局部存储容量的约束。为了减少访存,提高局部存储中数据的重用性,本文还提出了一个通讯优化方法,该方法为程序构建重用图,并根据重用图划分来删除冗余通讯。最后基于异构多核处理器Cell对数据自动管理框架进行了验证和评测,实验表明,该框架能够很好的管理Cell局部存储中的数据,为应用生成高效的代码。(3)提出了面向异构多核处理器的模型驱动的多任务多级并行方法。为了协调异构多核处理器中的计算资源和存储资源,本文首先对异构多核资源管理问题进行抽象,提出并实现了一个资源管理模型,该模型对应一个三维的优化空间,包括变量选择、任务分组和PE(Processing Element)分配。然后,本文提出并实现了一个基于基因算法的智能搜索方法对模型的优化空间进行搜索,来为程序选择性能较优的并行策略。最后基于异构多核处理器Cell对模型进行验证。实验表明,本文设计的资源管理模型能够在极短的时间内为应用确定较好的并行策略,极大的减轻了程序员的编程负担。(4)提出了面向多媒体应用的SIMD(Single Instruction Multiple Data)代码自动生成方法。根据多媒体应用的特点,本文实现了一系列循环变换方法来发掘循环中更多的SIMD并行。针对如何判断循环中哪些部分适于利用SIMD并行,本文提出并实现了基于代价子图的指令选择方法,该方法对循环中可利用SIMD并行的部分进行评估。本文通过利用循环展开、寄存器重命名等方法为应用生成SIMD指令。最后通过实验对指令选择、代码生成方法以及程序性能进行了验证和评估。

冯晓兵[3]1999年在《数据分布全局优化技术》文中研究说明如何用好并行处理系统以解决大规模科学计算问题是当前计算机科学面临的一个重要课题,开发高效的并行软件是解决问题的核心。作为软件开发的工具,并行编译系统在并行软件的开发中起着重要的作用。目标程序的质量是并行编译系统的生命。对于面向分布式系统的并行编译器而言,数据分布和循环分割策略的全局优化效果对目标程序的性能具有决定性作用。在自动并行编译系统中,数据分布和循环分割策略的优化有两个重要的问题要解决:一是如何从程序中发掘更多的并行性;第二是如何从程序整体上考虑并行优化的策略,减少通讯的开销。这是当前研究的热点问题。本文以分布式处理系统为背景提出了一个解决数据分布和循环分割全局优化的方案,并将之应用于自动并行编译系统的研发工作,取得了良好的效果。本文的主要贡献如下: 1) 设计并实现了语言扩展,通过引入语言制导,特别是REDUCTION等制导的提出使自动产生的并行程序质量有显著提高。 2) 分析了在分布式存储结构的并行处理系统中通讯产生的条件,指出数据和计算的对齐关系、数据之间的对齐关系是影响通讯分析的两个基本因素。结合曙光2000-Ⅰ的特点,给出了简化的通讯量评估方法。 3) 设计了描述程序中对齐关系的程序对齐信息图,在此基础上对程序中与并行优化相关的各种对齐关系作了描述,并设计了一组算法找出程序中存在的对齐关系。程序中存在的对齐关系是进行过程内数据分布和循环分割优化策略推导的基础。 4) 设计并实现了过程内的数据分布和循环分割的优化算法,算法的核心是使得数据分布和循环分割策略尽可能多地满足程序中存在的对齐关系。 5) 在过程内分析中,提出面向全局优化的循环流水执行方式。 6) 设计并实现了过程间的并行优化框架算法,利用过程繁衍技术,根据过程调用的上下文信息进行过程调用的实例化处理;在进行过程间分析时,对已知的数据分布信息进行传播。 7) 将上述成果应用于自动并行编译系统的研发工作,经实验表明本文的思想可以显著提高目标程序的质量。 我们认为全局并行优化技术的研究可以使得并行编译系统成为应用人员开发并行软件的有力工具。而相关辅助工具和集成环境的开发,使得程序员可以从多个方面干预程序的并行化工作和对并行程序进行调试,这是开发并行软件的有效手段。

傅立国[4]2014年在《面向分布存储结构的通信生成及代价评估技术研究》文中研究说明在现今主流的高性能计算系统中,分布存储结构因为具有较好的可扩展性和应用前景,成为并行编译技术研究的热点之一。在分布存储结构的并行系统中,计算节点通过网络访问异地数据的代价远高于访问本地数据的代价。因此与通信相关的技术在面向分布存储结构的并行编译研究中具有重要意义。本文以并行编译系统SW-VEC的研发工作为基础,对面向分布存储结构并行编译过程中循环间重分布通信的相关问题进行了研究。研究的主要内容和贡献如下:1、规则循环间精确的重分布通信。传统的循环间重分布通信中包含有大量冗余的通信数据。本文针对该问题,提出了一种精确通信代码生成算法,通过求解重分布通信前后处理器本地数据分布空间的交集,得到源处理器和目的处理器之间精确的通信集合。按通信时处理器间逻辑关系的不同,将重分布通信分为数据重组通信和近邻通信,并使用不同的通信原语生成具体的通信代码。实验结果表明,该算法能够有效的改善循环间重分布通信,消除通信冗余,提高并行程序的性能。2、规则循环间重分布通信的代价分析。在面向分布存储结构的并行编译过程中,循环间计算和数据的动态划分过程需要评估当前划分潜在的通信代价以作为指导。以往的评估方法未考虑通信的具体实现以及目标机器的硬件特征,因而对循环间的划分缺乏更加有效的指导。本文结合精确的重分布通信代码生成方式,提出了相应的循环间重分布通信代价模型。按照通信实现的过程,将重分布通信代价分为打包开销、数据传输开销和解包开销。并结合通信原语分析了数据传输过程中,数据重组通信和近邻通信两种通信方式具体实现的细节及开销。实验结果表明,使用循环间重分布通信代价分析作为程序并行时动态划分的参照,可以有效避免并行化编译过程中不利的并行行为。3、一类不规则问题的通信代码生成。不规则应用也存在并行的可能性。对于不规则的数组访问,传统的仿射划分无法表示其访问函数,使得并行编译器不能对该类循环进行划分和生成通信代码,从而只能保守的放弃并行。针对一类含有可并行仿射边界循环层的不规则问题提出了一种划分和通信生成的方法,使用一类特殊的仿射表达式表示不规则数组在各个处理器的访问函数,并通过冗余通信技术生成满足不规则循环间数组生产-消费关系的通信代码。实验结果证明了该方法的有效性且取得了预期的加速比。本文提出的优化技术已经在SW-VEC并行编译系统中得到了实现和应用,其正确性和有效性得到了验证。

闫昭[5]2009年在《程序并行识别方法及应用研究》文中提出并行计算就是在并行计算机或分布式计算机等高性能计算系统上所做的超级计算,其物质基础是高性能并行计算机。为了能在高性能并行计算机上生成高速运行的并行代码,并行化编译技术的研究和发展同样成为计算机科学研究领域的一个热点。串行程序自动并行化是并行编译技术最重要的内容之一,它自动将串行程序转换为等价的能在并行计算机上高效运行的并行程序,并且能克服并行计算机编程困难、软件移植困难的不足,降低并行程序开发成本。本文针对在编译阶段实现串行程序自动并行化课题提出了一系列的并行处理方法。首先研究了自动并行化中的并行粒度,通过对三种并行粒度的分析提出了一种中粒度并行的实现方法,其中主要提出了中粒度并行时的基本块的并行识别方法和并行优化方法,解决了并行处理时并行线程工作量与线程开销之间的矛盾,避免了在并行处理时可能出现的程序执行效率降低的现象;其次,针对占串行程序计算量主体的循环的自动并行化进行了研究,并且提出了关于紧嵌套循环的自动并行化方法,为了解决并行程序的硬件环境成本高的问题而提出的在多核系统下对紧嵌套循环进行自动并行化时的并行识别方法,数据划分方法和计算划分方法,实现了提高串行循环的执行速度,加大了程序自动并行化的应用力度;最后,设计了在并行化编译器中自动生成语法分析表时的一个自动并行处理算法,通过一个小的例子充分说明了并行的高效性。

连瑞琦[6]2000年在《具有可适应性的程序分析技术》文中提出编译器在发掘高性能计算机系统并行性的过程中起着非常重要的作用,而其中程序分析又是编译器开发并行性的关键步骤之一。然而,对编译器精度和功能的要求的逐步提高,导致程序分析日益复杂,难于编写、移植和维护。因此,程序分析部分的可适应性问题成为编译领域的研究热点之一。本文在对程序分析算法本身及程序分析对不同并行体系结构的支持方式进行了较为深入的研究后,得到了一个能解决程序分析可适应性问题的整体方案,该方案通过运用多视图的编程范式、过程间分析优化程序自动生成和增量式分析算法等手段,取到了比较好的效果。 本文的主要贡献有: 1.提出一个能适用于所有过程间数据流分析问题的模型。这个模型中过程间分析问题完全是过程内分析问题的扩展,克服了以前其它模型把过程间和过程内分析问题割裂开来的缺点。通过这种模型,我们可以采用统一的、相互协作的过程间和过程内算法解决数据流分析问题,并得到较为精确的上下文敏感的分析结果。 2.根据以上问题模型,提出并实现了一个过程间分析优化程序生成器——IGEN。在IGEN中,我们主要解决了用户描述方法,算法框架选择等问题。由于以上问题的很好解决,IGEN可以生成过程间分析程序和优化程序,并且,它生成的程序具有独立于中间表示,可在一定范围内拼装、选择算法,可增量式维护信息等特点。所以,IGEN既能大幅度减轻程序员的劳动,又能大大提高过程间分析优化部分的可适应性。 3.提出了用多视图的编程范式编制程序分析部分的方案。这里,我们主要解决了视图的划分和定义,算法抽象层次的确定等问题,该方案的运用使程序分析部分从多个方面具备了较高程度的可适应性。 4.提出了一种增量式分析算法。该算法可以适用于所有类型的流图——包括可归约流图和不可归约流图。另外,它实现也比较简单,能方便地运用于分析程序自动生成器中。 5.根据以上算法和设计,实现了一个具有可适应性的程序分析高层模块,并将这个模块分别运用在几个不同的编译系统中,对该模块从正确性、效率和可适应性等几方面进行了验证。

赵捷[7]2012年在《面向分布存储的并行编译优化技术研究》文中认为当今世界上主流的高性能计算机系统大多具备节点间、节点内及SIMD短向量部件等多层次并行计算资源,如何使用并行化编译系统自动发掘应用程序中蕴含的不同层次、不同粒度的并行性已成为提高高性能计算机系统应用性能的一项关键技术。近年来针对串行程序SIMD向量化和节点内的并行开展了大量的工作,相应技术也已经发展得比较成熟,而并行化编译在分布存储结构计算机上的发展却相对较慢。虽然面向分布存储结构的并行化编译优化技术已经取得了许多优秀的研究成果,但仍有许多问题亟待研究和解决。本文基于依赖关系分析,研究面向分布存储结构的并行化编译优化技术,主要内容包括:1、并行化编译系统及优化技术研究现状。结合高性能计算机体系结构的发展和当前主流高性能计算机系统的体系结构,介绍并行化编译系统,尤其是面向分布存储结构的并行化编译系统在国内外的研究与发展现状。根据并行化编译系统的研究基础和优化技术原理提出依赖关系分析的重要性,说明论文的研究内容与意义。2、依赖关系面向分布存储结构的并行性开发。依赖关系是影响程序并行化的关键因素之一,针对程序中的伪依赖,研究精确的依赖测试方法;通过对不同类型依赖关系的分析,深入挖掘依赖关系面向分布存储结构的并行性。该部分研究内容的主要贡献是:通过构建二次规划模型,提出了一种非线性下标表达式的精确依赖测试方法,有效消除了部分伪依赖;通过创建适当的数据副本,实现了循环携带反依赖的MPI自动并行化。3、基于嵌套循环分类的并行识别研究。总结传统优化编译器的并行识别技术,结合嵌套循环结构的特点,研究提高程序并行识别能力的方法,并通过代价分析和循环优化技术阻止收益为负的循环的并行化。该部分研究内容的主要贡献是:提出了一种新的嵌套循环分类方法,并基于此实现了程序的自动并行识别;利用代价分析和循环优化,有效阻止了收益为负的嵌套循环的并行化,提高了并行程序效率。4、基于数组数据流分析的通信优化。介绍面向分布存储结构程序并行通信优化的意义,区分代码生成前后通信优化的不同,总结实现通信优化的技术,利用依赖关系精确构建数组数据流信息,求解精确的通信数据。该部分研究内容的主要贡献是:通过构建数组数据流信息,依据过程间分析和优化技术,提出了一种求解精确通信数据的算法,有效消除了消息传递并行程序的冗余通信,同时降低了求解通信数据算法的时间复杂度。5、测试与实验验证。对本文提出的优化技术分别进行单独测试,结合基准测试程序验证研究内容的意义和效果;通过联合测试,验证并行化编译系统对开发多粒度并行性的支持和效率。最后总结全文研究工作,并对下一步研究计划进行展望。

刘任[8]1995年在《MPP机上代码生成技术》文中提出并行编译(重构)系统是多处理机的重要组成部分之一。本文介绍分布存储多处理机系统上FORTRAN语言的并行识别系统AUTOPAR的实现,阐述了MPP机上并行代码生成的关键技术。数据依赖分析是并行识别的基础。AUTPOAR对不存在循环可达依赖的循环进行并行处理。循环调度用于平衡处理机负载,好的循环调度算法能够降低循环调度开销至最小。循环变换在AUTOPAR中起多种作用:消除循环可达依赖,减少通讯开销。本文还提出了一种评测循环并行性的方法。 通讯优化是影响并行识别器性能的关键之一。本文介绍了几种先进的分布式存储机器上通讯优化技术,包括消息向量化,消息合成、消息管道化等等。AUTOPAR综合使用了这几种通讯优化技术。

林进[9]1998年在《并行处理系统的循环分割和数据分布技术研究》文中研究说明随着并行处理技术的发展,并行软件开发日益成为一个至关重要的问题。作为软件开发的重要部分,并行编译具有不可替代的作用。并行编译包含许多复杂的技术。循环/数据分割作为其中关键的一环,对分布式存储机器上的应用程序性能具有重大影响。循环/数据的自动分割需要考虑并行性的开发、负载平衡、通讯同步开销等诸多问题。虽然目前已经在这方面做了很多工作,但许多问题还没有得到圆满解决。本文对分布式内存的SIMD机器上的数据传输、处理机间通讯和负载平衡等方面进行了研究,并用以指导该系统上的循环/数据的自动分割,取得有价值的成果。作者将其中的技术成果应用于一个SIMD机器上的自动并行的C编译器的设计和实现中,取得比较好的效果。 本文的主要贡献包括以下几方面: (1) 研究了一个带有分布式内存和全局内存的SIMD机器—VE16的系统模型,分析该系统模型所提供的支持数据在全局内存和分布式内存之间传输的数据传输函数和处理机间通讯例程,为该系统上的循环/数据分割研究提供良好的基础。 (2) 提出一个简单有效的数据传输模型,计算循环中数据足迹在全局内存和分布式内存之间的传输次数,以指导VE16机器上的循环自动分割策略。 (3) 给出一个基于VE16机器的优化数据传输的循环自动分割算法,它通过挑选循环分块的大小,使得所需要的数据传输次数最小,并且数据传输和计算的同步开销比较小,从而提高应用程序的性能。 (4) 提出一个简单有效的通讯开销评估模型,它通过识别规则模式通讯和分解复杂通讯等手段,分析出给定循环分布和数据分布条件下所需要的通讯开销,为确定优化的循环分布和数据分布提供指导方法。 (5) 建立包含对准信息和相应通讯开销的数据迭代图。该数据迭代图不仅反映了程序中多个非紧嵌的循环嵌套及其存取的数组至处理单元的映射关系,而且反映两种映射关系之间的相互作用。 (6) 在数据迭代图基础上提出一个启发式算法计算较优的数据分布和迭代分布,以优化处理单元之间的通讯开销。该算法通过分析多个循环嵌套所涉及的多个数组映射和迭代映射之间复杂的相互制约关系,从全局的角度求得一个较优的数据迭代分布方案。 (7) 在面向VE16机器的自动并行编译器—VCC的设计和实现中采用以上研究成果。实验结果表明在减少数据传输开销和通讯开销上有着显著的成效。

陈骏[10]2004年在《网络构件动态优化模型的研究》文中提出软件构件化可以说是跨世纪软件技术发展的必然趋势,也是软件工程界的一个热门话题。随着传统构件技术与Internet的进一步融合,基于Internet异构环境下分布式软件构件——网络构件已成为构件发展的重要方向之一。然而由于Internet的不稳定性、局部自治性、异构性等特性,不仅使网络构件的运行环境处于动态不可预知的情况下,而且网络服务模块的不断完善,网络构件自身复杂度呈指数级增加。因此无论是构件运行的稳定性还是效率都必将面临巨大的考验。 本文的主要工作包括: (1)我们考虑了传统的软件构件在Internet异构环境下所表现出的独特性,提出了网络构件的概念,并对网络构件进行了形式化的定义与描述。 (2)针对网络构件的运行稳定性和效率提出了动态缓冲、静态编译和仿生物进化三个不同的优化模型。接着,针对动态缓冲模型进行详细的系统设计。基于网络构件缓冲优化模型的EEJBM体系结构采用服务器路由和构件调用预测算法来提高EJB应用系统的效率,把优化的重点放在使用Register-Provide来提供高效服务器地址和使用EJBPOOL来缓冲EJB构件的连接过程。文中分析了三种EJBPOOL中的构件预测替换策略,并且讨论每个算法特性及其不同应用场景。 (3)我们深入分析了工作流系统,把它作为协同式构件开发的底层引擎。然后结合RUP的软件开发思想,在SUN公司J2EE架构下,研制开发了基于构件开发的工具包(CBSDK)系统。我们在CBSDK平台下,对基于网络构件缓冲优化模型的EEJBM进行了试验分析。实验结果表明,这种新的EJB体系结构有效提高了分布式系统的性能。 目前网络构件软件系统从体系结构方面着手还没有一套系统化规范化的评测模型和理论原型。因此在优化评测方面需要我们对现有的网络模型建模,给出一套数学模型用来描述网构化的软件系统的效率。这也将是我们今后工作的重点所在。

参考文献:

[1]. 并行编译中的代码生成和通讯优化[D]. 戴晓如. 中国科学院研究生院(计算技术研究所). 2000

[2]. 面向多核处理器的并行编译及优化关键技术研究[D]. 王淼. 国防科学技术大学. 2010

[3]. 数据分布全局优化技术[D]. 冯晓兵. 中国科学院研究生院(计算技术研究所). 1999

[4]. 面向分布存储结构的通信生成及代价评估技术研究[D]. 傅立国. 解放军信息工程大学. 2014

[5]. 程序并行识别方法及应用研究[D]. 闫昭. 吉林大学. 2009

[6]. 具有可适应性的程序分析技术[D]. 连瑞琦. 中国科学院研究生院(计算技术研究所). 2000

[7]. 面向分布存储的并行编译优化技术研究[D]. 赵捷. 解放军信息工程大学. 2012

[8]. MPP机上代码生成技术[D]. 刘任. 中国科学院研究生院(计算技术研究所). 1995

[9]. 并行处理系统的循环分割和数据分布技术研究[D]. 林进. 中国科学院研究生院(计算技术研究所). 1998

[10]. 网络构件动态优化模型的研究[D]. 陈骏. 浙江大学. 2004

标签:;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  

并行编译中的代码生成和通讯优化
下载Doc文档

猜你喜欢