SIMD自动向量识别及代码调优技术研究

来源 :解放军信息工程大学 | 被引量 : 9次 | 上传用户:eacy_tang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
多媒体应用通常具有计算规则、密集、并行度高的特点,SIMD功能部件和SIMD扩展指令集能够对多媒体程序中的数据进行并行处理,可较好地提升多媒体程序的运行速度。而随着多媒体程序日益复杂,SIMD多媒体指令集已得到很大扩充,利用SIMD扩展实现应用程序的性能加速也已经走出传统的多媒体范畴,并日趋成熟地进入到科学计算领域。尽管当前很多商用编译器都可以对应用程序进行自动向量化,但是所生成的向量化代码性能普遍不高,SIMD自动向量化及编译优化仍然存在大量的困难,例如对结构体和指针的引用,数据依赖判定和控制依赖的转换等,都严重阻碍了向量化编译器进行向量化发掘。为了完善SIMD向量化识别,进一步发掘和优化应用程序中的向量化并行性,我们开发了面向国产高性能多核处理器SW1600SIMD多媒体扩展的源到源自动向量化工具SW-VEC,通过对串行源程序的分析、优化和重构,发掘应用程序中的SIMD数据并行性,生成符合国产多核处理器SW1600结构特点的高效SIMD源程序。本文研究了在构建自动向量化系统中主要影响向量识别与性能优化的关键技术,重点对向量化预优化、SIMD依赖关系分析、SIMD向量化并行性发掘与性能优化等各阶段中的关键技术开展了研究,同时根据课题需要,构建了基于交互的SIMD向量化代码性能调优框架,对其中所涉及到的交互界面设计、反馈式调优信息获取和编译指示语句设计实现等关键技术进行了研究。论文创新工作主要体现在以下四个方面:1、在SIMD向量化预优化中,论述了SIMD向量化连续性和对齐性的分析和优化方法,提出了针对结构体和指针的连续性和对齐分析优化方法。现有的SIMD向量化方法对于结构体和指针结构,采用的方法都是局部或者全局的数据重组策略,定义新的存储结构,将结构体或指针结构安排到新的存储空间中,改变其原有的存储布局结构实现向量化,这种方法带来了额外的空间和时间开销,影响了所生成的向量化代码性能。为此,论文对结构体的不连续和不对齐问题,提出了结构成员重排方法,该方法通过判定结构体成员引用是否存在同构语句,对结构体成员顺序进行调整和填充,实现结构体的连续和对齐分析变换;对程序中的指针结构,通过对指针引用的跟踪记录,确定指针引用的连续和对齐关系。实验结果表明,结构体成员重排方法及指针连续对齐分析和优化方法,可有效提高向量化识别率和生成的向量化代码性能。与局部数据重组优化方式相比,对测试程序的核心代码片断,结构体成员重排优化方法所获得的性能加速比由原来负加速比提高到300%以上,对Intel编译器显示无法向量化的指针代码片断,通过指针连续性和对齐分析优化,实现了对指针的SIMD向量化识别,并获得了7%~43%的性能加速比。2、在SIMD向量化的数据依赖关系判断中,提出了基于数据依赖距离和向量化因子间关系的SIMD数据依赖关系判定形式化方法,并在此基础上,提出了依赖环中解除反依赖关系算法并实现了循环分布。针对循环中的控制流结构,提出了基于控制依赖图的SIMD向量化方法,根据扩展的控制依赖图建立执行变量数组,保存了条件表达式计算。通过该方法,不仅可在执行变量数组赋值时实现SIMD自动向量化,而且可对执行变量数组的比较采用多版本向量化方法,将执行变量的不确定性引起的阻碍向量化影响限制在最小范围,扩大了向量化识别率范围,有效提升了程序的性能。实验结果表明,所提出的SIMD依赖关系分析和针对控制流结构的向量化分析和优化变换,可有效提高向量化识别率和性能,与Intel11.0版编译器相比,SW-VEC加速比最高提升约35%,平均加速比提高约21%,与未采用数据依赖与控制依赖分析优化相比,SW-VEC加速比最高提升约30%,平均加速比提高约17%。3、在SIMD并行性发掘及向量化代码性能优化中,根据SIMD向量化并行性发掘的不同阶段,提出了面向循环变换和基本块SLP并行性发掘的自动向量化代价收益计算方法,通过该计算方法来指导这两个阶段中SIMD向量化的并行性发掘和性能优化变换对不同方案的选择。针对生成的向量化代码,提出了通过循环交换和循环展开压紧技术实现向量寄存器重用的优化方法。前者通过发掘循环中的部分数据引用与循环索引的无关性,利用循环交换将循环内层中与向量化循环无关的向量计算提取到循环外层,消除向量在循环中的冗余装载和计算操作,提高向量寄存器的重用,后者通过考察比较循环携带依赖的依赖距离和向量化因子间的关系,当循环中存在循环携带的流依赖、输出依赖或输入依赖时,可实现向量寄存器的全部和部分重用优化。另外,针对SIMD功能部件和标量部件的并行性,提出了循环中向量和标量混合并行方法。通过循环分段展开改变循环内语句的执行方式,将循环内语句分成向量化和标量语句部分,当两部分间没有依赖关系时,两类语句可分别在SIMD向量部件与标量功能部件并行执行,提高了系统的资源利用率。实验结果表明,向量寄存器重用优化结合收益代价的分析,可以较好地实现向量化代码性能的提升,利用循环分段展开算法可实现向量和标量混合并行,有效提高所生成向量化代码的性能,平均加速比提高约12%。4、提出了基于交互的向量化性能调优框架的构建。该框架融合了向量化调优窗口界面、静态SIMD向量化识别与反馈式性能调优及分析和向量化编译指示语句的插入等三部分。通过SIMD向量化代码性能调优框架,在向量化调优窗口界面中将动态反馈式性能调优与静态向量化代码生成进行了有机结合,同时配合规范、完备的向量化编译指示,可有效提高向量化代码性能。实验结果表明,通过交互式向量化性能调优,SPEC CPU2000中部分测试程序性能得到了较好地提升,其性能加速比最高可提升约50%,平均加速比比优化前提高了约10%。论文最后对SW-VEC系统整体的SIMD向量化识别率和生成的向量化代码性能进行了测试。实验结果表明,SW-VEC自动向量化识别率要优于Intel11.0版编译器,性能加速比高于Intel11.0编译器约16%。对于行业测试集,交互式向量化性能调优所获得的性能加速比与手工改写所获得的性能加速比已经比较接近,平均性能可达到手工改写代码性能加速比的90%以上,说明了交互式向量化代码性能调优框架具有较好的实用性。
其他文献
回 回 产卜爹仇贱回——回 日E回。”。回祖 一回“。回干 肉果幻中 N_。NH lP7-ewwe--一”$ MN。W;- __._——————》 砧叫]们羽 制作:陈恬’#陈川个美食 Back to yield
随着物联网产业化的推进和行业的延伸,使物联网技术和医疗电子技术有效整合,形成以信息化、智能化为支撑,以提供健康监护、紧急救援、精神关怀为基本的新型医疗服务系统,随着人民
明中叶以后,由来已久的以今律古的“叶音说”的影响地位得到了动摇,杨慎怀疑“叶音说”并力求修正错误“旧叶”,焦弦明确提出“古诗无叶音”的主张,陈第则彻底破除了“叶音说”,并
学习是学生的首要任务和主要活动方式,学习心理主要是指学生在学习过程中产生的心理现象及其规律等.学习心理是学习行为的基础,学习行为在学习心理的引导下产生.探明艺术生学
随着计算机技术,网络技术的运用,信息获取方式呈现出多元化趋势。图书馆作为文化教育机构和社会文献信息中心,应拓宽服务领域,创新服务理念,强化服务措施,丰富服务内容,积极开展基于
回 回 产卜爹仇贱回——回 日E回。”。回祖 一回“。回干 肉果幻中 N_。NH lP7-ewwe--一”$ MN。W;- __._——————》 砧叫]们羽 制作:陈恬’#陈川个美食 Back to yield
食品药品是我们生活当中必不可少的,但是,食品安全存在很大的风险,怎么解决风险是我们今天研究的方向。当前的食品药品种类繁多,并且非常的复杂,怎样进行检验非常重要,运用科
近年来,城市之间的竞争越来越倾向于城市形象等软实力方面的展现,拥有一个优秀的城市形象对于一座城市的重要性不言而喻。伴随着新媒体的迅猛发展,城市微电影凭借其传播优势,
在当今国际社会经济全球化的大背景之下,不论是国家还是地区,在经济发展过程中部需要利用国际社会中的资源,借助国际市场,发展和壮大自身经济实力。树立生态文化理念,积累生态文化
互联网保险的快速发展也促进了保险合同的革新,对于实务中出现的保险说明义务等争议性的问题也存在着新的特征。本文从互联网保险合同的发展、传统模式下保险人之条款说明义