首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 78 毫秒
1.
刘晓娴  赵荣彩  赵捷  徐金龙 《软件学报》2014,25(6):1154-1168
发掘DOACROSS 循环中蕴含的并行性,选择合适的策略将其并行执行,对提升程序的并行性能非常重要.流水并行方式是规则DOACROSS 循环并行的重要方式.自动生成性能良好的流水并行代码是一项困难的工作,并行编译器对程序自动并行时常常对DOACROSS 循环作保守处理,损失了DOACROSS 循环包含的并行性,限制了程序的并行性能.针对上述问题,设计了一种选择计算划分循环层和循环分块层的启发式算法,给出了一个基于流水并行代价模型的循环分块大小计算公式,并使用计数信号量进行并行线程之间的同步,实现了基于OpenMP 的规则DOACROSS 循环流水并行代码的自动生成.通过对有限差分松弛法(finite difference relaxation,简称FDR)的波前(wavefront)循环和时域有限差分法(finite difference time domain,简称FDTD)中典型循环以及程序Poisson,LU 和Jacobi 的测试,算法自动生成的流水并行代码能够在多核处理器上获得明显的性能提升,使用的流水分块大小计算公式能够较为精确地计算出循环流水并行时的最佳分块大小.自动生成的流水并行代码与基于手工选择的最优分块大小的流水并行代码相比,加速比达到手工选择加速比的89%.  相似文献   

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

3.
提出了循环分块在MPI系统中的块分配方案———列组分配方案,并给出了在不同并行体系结构下依据列组分配方案计算块分配大小的算法。实验表明算法计算出的块分配方法对于发挥循环流水并行的效率有着较好的作用。  相似文献   

4.
将OpenACC编程模型用于异构多核处理器时,由于异构多核处理器加速设备内存有限,操作大量数据的代码不能获得很好的加速。针对这一问题,在OpenACC中引入循环分块子句,对循环进行分块处理,使每个循环块使用的数据能够存储在设备内存中;提出面向异构多核处理器的循环分块子句生成算法,并在基于Open64的"源-源"自动并行化系统Auto-ACC中进行实现。测试结果表明,在异构多核处理器上,扩展的循环分块子句及所提生成算法能够对程序进行明显的加速。  相似文献   

5.
RISC多发射结构中循环优化的软件流水算法   总被引:2,自引:0,他引:2  
软件流水技术是一种很有效的循环优化方法。本文综述了软件流水的基本思想和算法分类;详细描述了三个典型的算法——LAM的算法,完善流水法和增强流水调度法;从时间优化效益,空间效益和计算复杂度等方面对它们作了分析比较;最后,对软件流水技术作了评价。  相似文献   

6.
舒辉  康绯 《计算机研究与发展》2002,39(10):1303-1306
循环分块是一种提高循环Cache命中率的循环变换技术,循环分块的大小是决定循环分块效率的关键因素,CME(cache miss equations)是一种精确分析程序中循环Cache命中率的数学模型,从CME理论模型出发,通过比较循环分块前后CME的变化,结合PADDING技术可以得出一个循环分块算法。实验表明,通过该算法计算出的块大小较之经典的LRW循环分块算法,在确保完全消除循环中数且引用数据访问Cache自冲突的同时,可以获得更大的分块,从而提高了循环分块的分块效率。  相似文献   

7.
8.
一种软件流水的反流水算法   总被引:1,自引:0,他引:1       下载免费PDF全文
软件流水是一种循环程序的优化技术,已经广泛应用于现代优化编译器中.为了充分利用VLIW DSP处理机的指令级并行性,必须使用软件流水技术对DSP程序进行优化.然而,在串行源代码不存在的情况下,对软件流水后的原始代码进行变换、理解、测试和调试,并转换成其他处理机的代码是非常困难的.提出了一种反流水技术,它能够将软件流水后的优化汇编代码反向转换成语义等价的相应代码.通过20个程序的初步实验,验证了所提出的反流水算法的正确性.  相似文献   

9.
具有病态规模的嵌套循环程序在进行循环分块时容易忽略分块因子对向量化的影响,导致非对齐数据访问,降低分块后循环代码的性能。提出了一种向量化友好的循环分块因子选择算法VEC-TSS。该算法对可向量化循环层以向量化收益分析确定分块因子,对其他循环层通过以局部性收益和并行粒度确定分块因子。实验结果表明,针对具有病态规模的循环程序,VEC-TSS算法与另外两种分块因子选择算法相比可以获得更好的程序加速比,同时具有良好的可扩展性。  相似文献   

10.
循环分块是一种广泛用于改善数据局部性和开发并行性的程序变换优化技术.主要分为2类:固定分块技术和参数化分块技术,系统地总结了这2类技术,并分析了其优缺点.由于分块大小的选择会严重影响分块代码的性能,因此介绍分析了选择最优分块大小的各种方法.此外,总结了循环分块在多级分块、并行性开发和不完美嵌套循环等方面应用的各项技术.通过对循环分块技术当前研究现状的分析,得出如下结论:1)循环分块技术中的计算复杂度和生成代码效率问题还未得到完全解决,如何利用循环边界有效地约束迭代空间并提高数据局部性还需要更深入的研究;2)最优分块大小的选择依然是一个开放式难题,研究清楚分级存储架构中每级分块对性能的影响具有重要的意义;3)从循环分块的应用角度,如何有效地构建面向任意嵌套循环集的自动分块代码生成系统,同时充分利用深度共享存储资源和多核架构实现分块代码的高并行度,也是一个需要深入研究的问题.  相似文献   

11.
软件流水的开销模型和决策框架   总被引:1,自引:0,他引:1       下载免费PDF全文
李文龙  林海波  汤志忠 《软件学报》2004,15(7):1005-1011
软件流水是一种重要的指令调度技术,它通过重叠地执行不同的循环体来提高指令级并行性(instruction level parallelism,简称ILP).模调度是一类被广泛采用的软件流水调度算法.软件流水并非一种无损的优化方法,它具有一定的开销,比如延长了编译时间、增加了寄存器压力等.而且,受到体系结构、调度算法以及程序特性的限制,进行软件流水并不一定能达到理想的加速比,有时反而会引起性能下降.提出了一种面向程序特性的软件流水开销模型,对此模型下的软件流水开销进行了量化分析,并提出了一种基于相关性分析的  相似文献   

12.
基于商空间粒度的覆盖聚类算法   总被引:1,自引:0,他引:1  
介绍了覆盖算法的基本思想,给出了商空间粒度的基本原理,提出了基于商空间粒度的覆盖聚类算法.通过实验验证了该算法的有效性和可行性,它适合处理大规模的数据样本.  相似文献   

13.
一种基于知识粒度的启发式属性约简算法   总被引:1,自引:0,他引:1  
属性约简是粗糙集理论进行知识获取的核心问题之一。根据属性相似度与知识粒度的一致性,通过条件属性与决策属性以及条件属性之间的相似度度量,提出了一种基于知识粒度的启发式属性约简算法。根据条件属性与决策属性的相似度对条件属性进行降序排列,根据条件属性之间的相似度度量选择重要的属性,从而得到约简集合。理论分析与实验结果表明,该算法具有较高的运行效率和较好的约简效果。  相似文献   

14.
粗糙集理论认为知识就是分类。对知识的分类能力给予了量化,提出利用知识的划分粒度来定量地表示知识的分类能力。首先建立了知识与其划分粒度间的关系;其次,基于划分粒度定义了属性的重要性,并以此为启发式信息设计了一个信息系统的约简算法;最后通过实例表明,该算法是高效的。  相似文献   

15.
通过总结已有的纹理合成算法,采用基于样图的纹理合成方式提出了一种快速块拼贴纹理合成算法。该算法基于纹理的相关性,在搜索最佳目标纹理块时,通过相关位置偏移技术在样图中映射出已合成块的地址,适时加入螺旋搜索方法,利用块边界匹配算法将搜索到的地址块进行匹配,直到找到符合误差阈值的纹理块然后进行输出合成。通过实验发现,算法在处理随机性纹理和结构性纹理时都能取得比原先算法更好的合成效果,合成时间也大大加快。  相似文献   

16.
现有并行识别方法用于众核处理器时存在一定不足,当选择的循环并行维迭代数较少时可能导致严重地负载不均衡。针对这一问题,提出了一种面向众核处理器的多维并行识别方法,在现有并行识别方法无法做到较好的负载均衡时,选择嵌套循环的多个维进行并行,将多个并行维的迭代空间合并后再做任务划分,减少负载不均衡对程序并行效率的影响。此方法已在课题组开发的自动并行化系统中进行了实现,实际应用过程中能够提升一些应用程序在众核处理器上并行执行的效率。  相似文献   

17.
基于四阶段人工优化的软件流水技术   总被引:1,自引:1,他引:0       下载免费PDF全文
代码体积是优化存储资源有限的嵌入式系统的重要因素之一。针对该特点,使用oprofile性能分析工具,以EEMBC基准程序集作为工作负载,提出四阶段人工优化软件流水方法(FPMO)。电信类的自相关程序实验结果表明,FPMO以2.04%的代码增量为代价换来40.678%的性能提升,而单纯的编译器自动优化则以33.35%的体积膨胀换来38.33%的性能提升。  相似文献   

18.
There are many algorithms for the space-time mapping of nested loops. Some of them even make the optimal choices within their framework. We propose a preprocessing phase for algorithms in the polytope model, which extends the model and yields space-time mappings whose schedule is, in some cases, orders of magnitude faster. These are cases in which the dependence graph has small irregularities. The basic idea is to split the index set of the loop nests into parts with a regular dependence structure and apply the existing space-time mapping algorithms to these parts individually. This work is based on a seminal idea in the more limited context of loop parallelization at the code level. We elevate the idea to the model level (our model is the polytope model), which increases its applicability by providing a clearer and wider range of choices at an acceptable analysis cost. Index set splitting is one facet in the effort to extend the power of the polytope model and to enable the generation of competitive target code.  相似文献   

19.
基于商空间粒度理论的大规模SVM分类算法   总被引:3,自引:1,他引:3  
利用商空间粒度理论对已有的SVM分类算法进行改进,给出了一种新的SVM分类算法——SVMG。该算法将SVM分类问题划分成两个或多个子问题,从而降低了SVM分类复杂度。实验表明,改进的算法适用于处理大数据量的样本,能在保持分类精度的情况下有效地提高支持向量机的学习和分类速度。  相似文献   

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

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