首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 265 毫秒
1.
相关分析和程序并行化等技术已普遍受到重视,现有技术对过程内的相关分析和并行化效果是令人满意的,但是过程调用的出现为分析增添了许多困难.过程间相关性分析的目的正是为了开发含过程调用情况的程序的并行性.本文在深入研究别名对程序并行化影响的基础上,提出了一个新的强化别名分析算法,使被调用过程段的并行化成为可能.  相似文献   

2.
调用图是过程间分析和程度自动并行化的基础。生成精确调用图可以进一步开发程序的并行性。此文针对Fortran程序,提出了一项完全消除哑过程,产生精确调用图的技术与相应的算法。该算法已在面向MPP Fortran的程序自动并行化工具中实现。  相似文献   

3.
该文提出了一种将调用局部化技术应用于并行环境下面向对象语言的方法,文中详细讨论了该技术的适用条件以及如何通过该方法减少循环中的远程过程调用开销,该优化技术产首先将循环分离成多个包含有远程调用的循环,再将分离后的循环分离给循环中对象所在的处理器,最后,化简迭代空间,并且用消息传递来传输数据,这种优化对象分布和循环并行化之后进行,将函数调用局部化于处理器,通过这种优化,可以进一步挖掘循环中的任务并行性,降低计算复杂度,减少函数调用开销,尤其适合面向对象语言中对循环里小函数的优化,该技术已经在作者设计的Java自动并行化编译器JAPS-Ⅱ中实现,在实验中,利用这种优化技术得到了超线性性加速比。  相似文献   

4.
L为一个顺序执行的DO循环语句,其中包含赋值语句或IF-THEN-ELSE条件语句。通过数据相关性分析,计算相关距离,可以析取L中内在的并行性,实现L向DOALL循环的完全变换或部分变换。本文具体讨论了通过相关距离,对包含具有较为复杂的数组索引下标的赋值语句的DO循环,以及包含静态条件语句的DO循环进行并行化处理的两种方法。  相似文献   

5.
阳雪林  于勐  陈道蓄  谢立 《软件学报》2002,13(8):1718-1722
针对分布式环境下可抽取观察循环的不规则串行程序循环的动态依赖关系分析问题,提出了一个基于观察/执行模型的动态分析算法.其贡献是:(1) 算法可并行执行于分布式系统;(2) 直接分析具有拷入和最后赋值操作的循环;(3) 给出了循环的并行化方法;(4) 并不要求循环是完全可并行的,对某些部分可并行循环,也支持其并行执行.理论分析和实验表明,在处理器数量适当的情况下,循环可以并行时,可以获得很好的加速比;不能并行时,对串行执行增加的开销也是小的.从而为分布式环境下开发更多的循环并行性提供了一种新的手段.  相似文献   

6.
韩林  徐金龙  李颖颖  王阳 《计算机科学》2017,44(2):70-74, 81
大量循环中都存在着少数无法向量化的语句以及许多可向量化语句,循环分布通常可以将这些语句分离到不同的循环中,进而实现循环的部分向量化。目前主流的优化编译器仅支持简单激进的循环分布方法,因而导致向量化后的循环开销过大,且不利于寄存器和cache的重用。针对上述问题,提出了面向部分向量化的循环分布及聚合方法。首先,分析了一般循环分布的两个关键问题:语句集的划分和循环执行顺序的确定;其次,提出了面向最大聚合的凝聚图结点排序方法来指导循环合并,在不影响并行性的前提下减小了循环开销;最后,通过实验对提出的方法进行了验证。实验结果表明,对于测试用例,提出的方法能够生成正确的向量化代码,并且能够显著提高向量化程序的执行效率。  相似文献   

7.
传统的并行编译技术能够在编译期间进行相关性分析,有效地并行化循环程序,但是对于程序运行时潜在的并行性却无能为力.因此,并行编译技术必须使用实时依赖分析技术,尽可能挖掘循环级并行性.本文提出仿射依赖关系,消除了循环迭代依赖;基于投机并行思想,提出了SPAD方法.实例分析表明,SPAD是有效的.与LRPD和SPNT方法相比较,SPAD做了重要的改进,因此是更通用的投机并行化方案.  相似文献   

8.
并行化编译中的一种集成优化方法   总被引:1,自引:0,他引:1  
孙彤  李三立  李晓明 《软件学报》1996,7(12):705-713
本文提出了一种面向分布存储器多机系统的并行化编译方法.针对分布存储并行系统的特点,作者采用的基本优化策略是:折衷并行性与数据引用局部性;减少和隐藏通信开销.通过对基于仿射函数的程序分解方式所导致的数据通信性质的分析,得到了适合分布存储结构特殊要求的并行性开发方法.为了在保持并行性的前提下最小化通信数据总量,提出了基于齐次线性方程组求解的程序全局优化分解方法.为了优化数据通信的组织,提高结点代码的效率,又提出了一种以线性不等式组作为工具的更加实用的通信优化和结点代码生成方法.  相似文献   

9.
循环并行化是并行编译的核心问题之一。许多科学计算程序的大部分执行时间花费在循环上,有效开发循环中的并行性将提高整个程序的执行效率。多重循环最为常见,因此并行化多重循环具有重要的理论和现实意义。现代处理器中硬件资源迅速增长,也使得在整个多维循环空间中开发并行性成为必要。目前大多数软件流水算法只对最内层循环,仅有少数的算法对多重循环进行软件流水,本文介绍几种多重循环的软件流水算法,比较它们之间的相似与不同之处,为编译器实现中算法的选择提供了指导。  相似文献   

10.
数据密集型应用中的核心循环消耗了程序的大量执行时间.如何实现核心循环在粗粒度可重构体系结构(CGRA)上的有效映射仍是当前研究领域的难点.为了在CGRA上最大程度开发应用并行性,降低循环访存开销,提高硬件资源利用率,文中提出一种新颖的面向CGRA循环流水映射的数据并行优化方法.通过定义一种新的可重构计算模型TMGC2以实现对循环的多条数据流水线并行加速.为避免并行化执行带来的额外存储体冲突问题影响CGRA执行性能,为后续循环映射创造良好的数据条件,引入存储体消除策略对数据进行重组,并结合数据重用图实现数据并行优化.实验表明,采用文中方法对已有CGRA循环流水映射方法进行优化,可以提高37.2%的数据吞吐量及41.3%的资源利用率.  相似文献   

11.
Parallelizing compilers have traditionally focussed mainly on parallelizing loops. This paper presents a new framework for automatically parallelizing recursive procedures that typically appear in divide-and-conquer algorithms. We present compile-time analysis, using powerful, symbolic array section analysis, to detect the independence of multiple recursive calls in a procedure. This allows exploitation of a scalable form of nested parallelism, where each parallel task can further spawn off parallel work in subsequent recursive calls. We describe a runtime system which efficiently supports this kind of nested parallelism without unnecessarily blocking tasks. We have implemented this framework in a parallelizing compiler, which is able to automatically parallelize programs like quicksort and mergesort, written in C. For cases where even the advanced compile-time analysis we describe is not able to prove the independence of procedure calls, we propose novel techniques for speculative runtime parallelization, which are more efficient and powerful in this context than analogous techniques proposed previously for speculatively parallelizing loops. Our experimental results on an IBM G30 SMP machine show good speedups obtained by following our approach.  相似文献   

12.
赵捷  赵荣彩  丁锐  黄品丰 《软件学报》2012,23(10):2695-2704
传统的分布存储并行编译系统大多是在共享存储并行编译系统的基础上开发的.共享存储并行编译系统的并行识别技术适合OpenMP代码生成,实现方式是将所有嵌套循环都按照相同的识别方法进行处理,用于分布存储并行编译系统必然会导致无法高效发掘程序的并行性.分布存储并行编译系统应根据嵌套循环结构的特点进行分类处理,提出适合MPI代码生成的并行识别技术.为解决上述问题,根据嵌套循环的结构和MPI并行程序的特点,提出了一种新的嵌套循环分类方法,并针对不同的嵌套循环分别提出了相应的并行识别技术.实验结果表明,与采用传统并行识别技术的分布存储并行编译系统相比,按照所提方法对嵌套循环进行分类,采用相应并行识别技术的编译系统能够更高效地识别基准程序中的并行循环,自动生成的MPI并行代码其性能加速比提高了20%以上.  相似文献   

13.
针对含有大量循环的串行程序存在的问题,提出一种基于线程级前瞻技术的循环选择方案。该方案对循环进行最优选择后建立一个可并行运行的循环集。对于该集合中的循环,选择并行效率高的代码段作并行处理,以加快串行程序运行速度。实验表明,相对于一般的简单内部循环或外部循环并行方法,该方案使9种基准代码的加速比平均上升23.8%,从而提高串行程序并行运行的效率。  相似文献   

14.
吴悦  雷超付  杨洪斌 《计算机工程》2010,36(9):35-37,40
针对含有大量循环的串行程序存在的问题,提出一种基于线程级前瞻技术的循环选择方案。该方案对循环进行最优选择后建立一个可并行运行的循环集。对于该集合中的循环,选择并行效率高的代码段作并行处理,以加快串行程序运行速度。实验表明,相对于一般的简单内部循环或外部循环并行方法,该方案使9种基准代码的加速比平均上升23.8%,从而提高串行程序并行运行的效率。  相似文献   

15.
In this paper we address the problem of partitioning nested loops with non-uniform (irregular) dependence vectors. Parallelizing and partitioning of nested loops requires efficient inter-iteration dependence analysis. Although many methods exist for nested loop partitioning, most of these perform poorly when parallelizing nested loops with irregular dependences. Unlike the case of nested loops with uniform dependences these will have a complicated dependence pattern which forms a non-uniform dependence vector set. We apply the results of classical convex theory and principles of linear programming to iteration spaces and show the correspondence between minimum dependence distance computation and iteration space tiling. Cross-iteration dependences are analyzed by forming an Integer Dependence Convex Hull (IDCH). Every integer point in this IDCH corresponds to a dependence vector in the iteration space of the nested loops. A simple way to compute minimum dependence distances from the dependence distance vectors of the extreme points of the IDCH is presented. Using these minimum dependence distances the iteration space can be tiled. Iterations within a tile can be executed in parallel and the different tiles can then be executed with proper synchronization. We demonstrate that our technique gives much better speedup and extracts more parallelism than the existing techniques.  相似文献   

16.
自动寻找使多重串行循环并行化的幺模变换   总被引:2,自引:0,他引:2  
对于已知n维距离向量矩阵的多重串行循环,过去的并行化编译研究还缺乏寻找使循环外层并行化的幺模矩阵的可行算法.文章介绍了多重串行循环并行化的幺模变换方法,不仅从理论上证明满足外层并行化要求的合法幺模矩阵是存在的,而且通过构造性证明给出一个计算外层并行化幺模变换矩阵的可行算法,并探讨了扩大其适用范围于非完全嵌套和非常数相关距离循环的有效途径.  相似文献   

17.
18.
Current parallelizing compilers cannot identify a significant fraction of parallelizable loops because they have complex or statically insufficiently defined access patterns. As parallelizable loops arise frequently in practice, we advocate a novel framework for their identification: speculatively execute the loop as a doall and apply a fully parallel data dependence test to determine if it had any cross-iteration dependences; if the test fails, then the loop is reexecuted serially. Since, from our experience, a significant amount of the available parallelism in Fortran programs can be exploited by loops transformed through privatization and reduction parallelization, our methods can speculatively apply these transformations and then check their validity at run-time. Another important contribution of this paper is a novel method for reduction recognition which goes beyond syntactic pattern matching: it detects at run-time if the values stored in an array participate in a reduction operation, even if they are transferred through private variables and/or are affected by statically unpredictable control flow. We present experimental results on loops from the PERFECT Benchmarks, which substantiate our claim that these techniques can yield significant speedups which are often superior to those obtainable by inspector/executor methods  相似文献   

19.
In this paper, an approach to tiling nested loops for maximizing parallelism is proposed. The proposed method aims at aggregating independent computations of a loop nest into rectangular blocks and maximizing the block sizes for maximizing parallelism. At first, all the independent computations that can be executed in the first time unit are identified. These computations are called the initially independent computations. Then it is shown that all of them can be collected as a union of rectangular blocks. So, based on these, the entire iteration space of the loops is partitioned into rectangular blocks for maximizing parallelism. The proposed method is formulated as systematic procedures which can easily be implemented in a parallelizing compiler. It is shown that when the wavefront transformation is combined with the proposed method, the loops can always be tiled so that the tile size is greater than one. In comparison with previous work on tiling, the proposed method is shown to have several advantages as summarized in the conclusions of this paper.  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号