“核心电子器件、高端通用芯片及基础软件产品”国家科技重大专项(2009ZX01036-001-001-2)
- 作品数:31 被引量:66H指数:4
- 相关作者:赵荣彩丁锐赵捷姚远韩林更多>>
- 相关机构:解放军信息工程大学中国人民解放军信息工程大学国防科学技术大学更多>>
- 发文基金:国家科技重大专项国家重点实验室开放基金国家高技术研究发展计划更多>>
- 相关领域:自动化与计算机技术更多>>
- 基于有向图可达性的SLP向量化识别方法被引量:2
- 2017年
- SLP(superword level parallelism)是一种实现SIMD(single instruction multiple data)向量化的方法,当前的主流向量化编译器都实现了这种向量化方法.然而,当前算法在进行SLP向量化时,对应用程序中可向量化循环的分析过程过于保守,导致其识别SLP向量化的能力不足.为了提升该能力,本文提出了一种基于有向图可达性的SLP向量化识别方法.首先,基于数组依赖图构建包含数组和语句依赖信息的有向图,使同一条语句内的所有数组节点都在一个强连通分量内,并对强连通分量之间的依赖边进行剪枝;其次,分析不同强连通分量节点之间的可达性,根据节点的可达性获得识别SLP向量化所需的所有依赖信息,从而确定语句中的循环是否可以进行SLP向量化.将该方法在Open64-5.0编译器中实现后,SLP向量化效果得到大幅提升.对gcc-vect测试集中程序的实测结果表明,优化后的Open64-5.0编译器识别SLP向量化循环的能力优于GCC4.9,与Intel ICC14.0相当,生成的向量化代码性能优于当前最优算法.
- 赵捷赵荣彩
- 关键词:有向图可达性
- 面向异构系统的OpenMP程序自动生成被引量:3
- 2012年
- 异构系统的应用日益广泛。对一般的应用程序员而言,在异构体系结构上开发出高性能的应用程序并非易事。对OpenMP编程模型进行扩展,添加了适用于异构系统存储模型的编译子句;以Open64编译器为基础,实现了包含扩展子句OpenMP并行程序的自动生成。测试结果表明,自动生成的扩展OpenMP并行程序能够在异构系统上获得明显的性能提升。
- 刘晓娴黄品丰
- 关键词:异构系统OPENMP
- OpenMP数据分布子句自动生成算法
- 2013年
- 将OpenMP程序扩展到异构多核结构时,非本地存储访问会导致访存开销增加,影响程序性能。针对该问题,引入带数组划分信息的数据分布子句,对数据在异构多核存储系统的布局进行管理,提出一种基于并行循环识别和数组引用模式分析的算法,实现该类子句的自动生成。实验结果表明,自动生成的OpenMP程序包含数据分布子句,具有较好的数据局部性,可降低访存开销,在异构多核系统上获得明显的性能提升。
- 黄品丰赵荣彩韩林刘晓娴
- 关键词:异构多核数据局部性
- SIMD自动向量化编译优化概述被引量:30
- 2015年
- SIMD扩展部件是集成到通用处理器中的加速部件,旨在发掘多媒体程序和科学计算程序的数据级并行.首先介绍SIMD扩展部件的背景和研究现状,然后从发掘方法、数据布局、多平台向量化这3个角度介绍了SIMD自动向量化的研究问题、困难和最新研究成果,最后展望了SIMD编译优化未来的研究方向.
- 高伟赵荣彩韩林庞建民丁锐
- 关键词:自动向量化
- 循环展开技术在向量程序中的应用被引量:2
- 2016年
- 循环展开是一项常用的循环优化技术。当前针对串行程序的循环展开技术已经比较成熟,但是在实际应用中没有针对向量程序进行有效的循环展开。为了解决这个问题,提出了一种面向向量程序的循环展开技术。首先,针对向量寄存器压力和代码膨胀等限制因素,提出了一种自动计算展开因子的CUFVL算法;其次,根据向量循环展开的特点,制定了完全展开策略;最后结合CUFVL算法和完全展开策略,设计了向量循环展开的总体流程。实验结果表明,该方案能够计算出合适的展开因子,进而对向量程序进行适当的循环展开或完全展开,从而有效提升应用程序的性能。
- 高伟赵荣彩于海宁张庆花
- 反馈式编译在循环级性能分析中的应用被引量:3
- 2011年
- 针对现有技术难以全面及精确地分析程序循环特性的不足,提出一种程序循环级性能分析的方法。该方法采用动态反馈的编译优化技术,并结合静态分析的部分方法,无需硬件架构的支持,适用范围广。测试结果证明该方法能够对程序的循环部分进行精确分析,帮助程序员找出循环级热点,辅助进行相应的手工优化。
- 郝云龙赵荣彩侯永生朱嘉风
- 关键词:反馈式编译性能分析
- 出口分支语句的向量化方法被引量:2
- 2011年
- 传统的向量化方法和超字并行方法依靠数据依赖关系分析确定程序中的并行性,而依赖关系分析无法处理非结构化控制流语句,现有的编译器对该类语句的向量化能力有限。为此,给出一种面向SIMD扩展体系结构的出口分支语句向量化方法,该方法针对一个向量因子内的出口分支语句,能够有效地进行自动向量化处理。测试结果表明,该方法既充分发掘了程序数据流中的并行性,又保证了控制流语义的正确性。
- 朱嘉风赵荣彩侯永生郝云龙
- 关键词:向量化非结构化
- 基于重排序变换和循环分布的通信优化算法被引量:1
- 2012年
- 针对现有通信优化算法无法使MPI自动并行化编译器生成加速比理想的消息传递程序问题,提出了一种基于重排序变换和循环分布的通信优化算法。该算法根据给出的过程间副作用集合和基于mpi_wait/mpi_irecv移动的重排序变换规则,有序地采用重排序变换和循环分布,尽可能安全地扩大点到点非阻塞通信中通信与计算的重叠窗口,使MPI自动并行化编译器生成具有更多计算重叠通信的消息传递代码。实验结果表明,该算法能够隐藏更多的点到点非阻塞通信开销,并且明显提升消息传递程序的加速比。
- 陈达智赵荣彩韩林丁锐赵捷
- 关键词:通信优化并行化编译
- 基于跨基本块变换和循环分布的SLP优化技术
- 2013年
- 现有的SLP优化算法无法处理内层循环中存在的依赖环和归约,并且在基本块边界产生大量的冗余拆包和赋值语句,从而导致向量化效率不高。针对该问题,提出了一种基于跨基本块变换和循环分布的SLP优化算法。该算法以控制流图为基础,根据基本块间各数组变量的Define-Use关系以及跨越基本块之间的数据依赖关系进行跨基本块的向量化变换,有序地采用跨基本块变换和循环分布,尽可能发掘最内层循环基本块内语句的并行性,使SLP自动向量化编译器生成具有更多SIMD指令的向量化代码。实验结果表明,该算法能够隐藏更多跨基本块冗余操作的开销,同时利用跨基本块的数据依赖生成更优的SIMD指令,有效地提高了向量化程序的加速比。
- 索维毅赵荣彩姚远张小妹
- 关键词:SLP数据依赖控制流图
- 类型转换语句的SLP发掘方法被引量:2
- 2014年
- 多媒体技术的迅速发展使得越来越多的处理器集成了SIMD扩展,当前的编译器大多数都已实现了自动向量化功能。为了发掘迭代内并行,一些编译器在自动向量化模块中引入了SLP向量化方法。多媒体数据的密集存储和规则运算使得在处理多媒体数据时需要进行频繁的数据类型转换,而目前的SLP向量化方法对数据类型转换的处理能力还不完善。为了在存在大量数据类型转换语句的程序中发掘更多的SLP向量化机会,提出了一种类型转换语句的SLP发掘方法,它能够在SLP向量化框架下利用数据重组实现具有相同向量化因子和不同向量化因子的数据类型之间的转换。实验结果表明,该方法能够有效地对类型转换语句进行SLP向量化发掘,提高了程序的向量化执行效率。
- 赵博赵荣彩李雁冰高伟
- 关键词:数据重组SLPSIMD