论文摘要
流处理器以其强大的计算能力、较低的功耗和灵活的可编程性,成为当前高效能计算系统定制加速部件的主要选择之一,已成功运用于2008年TOP500排名第一的IBM Roadrunner系统。然而,原本面向多媒体领域开发的流编译器,在处理数据依赖关系更加复杂的科学计算应用时,表现出较差的适应性,对流存储系统特征的利用十分有限,致使存储墙问题更为严重,成为制约其性能发挥的瓶颈。因此,研究面向科学计算流处理器的编译存储优化技术成为释放流处理器强大计算能力,有效缓解存储墙问题的关键。本文重点研究了如何通过编译优化技术来改善流处理器的存储性能。流存储系统包括三级存储层次:本地寄存器文件(Local Register File,简称LRF)、流寄存器文件(Stream Register File,简称SRF)和片外存储系统。优化片上存储器的局部性、隐藏访存延迟和避免片上存储器溢出,能有效改进流处理器性能。本文在分析了大量具有不同性能特征的科学计算流程序的访存行为后,面向科学计算从优化片上存储器局部性、隐藏访存延迟和避免SRF溢出等方面进行了深入的研究。本文的主要工作和创新如下:1.当前流编译器通过簇间通信机制发掘簇间记录复用,然而大量簇间通信的引入严重影响了程序性能。本文提出了流转置方法ST,该方法根据程序的复用信息重新组织数据,将簇间记录复用等价地转换为同一运算簇内的记录复用。同时,为避免因数据重组导致的存储体冲突,该方法给出了发生存储体冲突的判别定理,并采用循环分割技术避免冲突发生。该方法在不引入任何簇间通信且不影响流访存性能的同时,有效发掘了ALU簇间记录复用,改进了LRF的局部性。与当前流编译器的簇间复用发掘方法相比,ST方法获得了高达46%的性能提升。2.发掘SRF中的流复用能有效改进SRF的局部性。据我们所知,迄今为止还没有现成的方法,能够自动发掘流程序中起始或终止边界为变量的变界流之间的复用,只能依靠程序员手工完成。本文提出了定界流替换方法CBSR,该方法是国际上第一个自动发掘变界流完整复用的方法,由一系列创新性的理论、机制和算法组成,包括首次提出的流复用识别理论、首次定义并构建的用于描述流复用信息的流复用图(SRG)、基于SRG发掘流完整复用的程序变换算法和SRF压力评估与缓解算法等。CBSR方法有效发掘了变界流之间的完整复用,避免了数据的重复加载,改进了SRF局部性,提升了程序性能。与当前流编译器的流调度方法相比,CBSR方法获得了1.14~2.78的性能加速比。3.存在于流的访存子序列之间的流部分复用,是流编程模型所特有的一类复用。当前流编译器无法发掘变界流之间的部分复用,面向传统体系结构的编译技术中也没有可借鉴的方法。本文对CBSR方法进行扩展,首次提出了发掘流部分复用的E-CBSR方法,该方法包括:定义并量化流部分复用;提出并证明它的识别与判定理论;改进SRG以描述该类复用;扩展CBSR方法中的程序变换算法使其能够处理流部分复用。该方法同时发掘了变界流之间的完整和部分复用,消除了流的冗余加载,改进了SRF的局部性。与当前流编译器的流调度方法相比,E-CBSR方法获得了1.27~2.54的性能加速比。4.数据预取是隐藏访存延迟的一种有效方法,但资源分配冲突会导致预取失效。本文提出了一种基于SRG的SRF资源分配避免算法SRFACA。与已有SRF资源分配算法相比,该算法在SRF预取开销更小的同时,避免了SRF资源分配冲突,增加了预取的有效性。实验结果表明,在CBSR/E-CBSR方法优化后的流程序基础之上,SRFACA算法进一步获得了高达1.88的性能加速比。5. SRF溢出将导致流复用和流预取带来的好处尽失。当前流编译器采用循环分段算法避免SRF的溢出,却破坏了程序中跨迭代流复用的发掘和流预取。本文提出了基于SRG的循环分块算法。与当前流循环分段技术相比,该算法可给出更加精确的SRF空间需求,自动确定合适的块大小,在有效避免SRF溢出的同时,确保跨迭代流复用的发掘和流预取。与循环分段算法相比,该算法获得了1.12~2.61的性能加速比。
论文目录
相关论文文献
- [1].方舟编译器初探[J]. 科技与创新 2019(23)
- [2].一种适用于可信编译器的源语言转换与检查框架[J]. 中国科技论文 2017(14)
- [3].华为方舟编译器开源官网正式上线:源代码已开放下载[J]. 电脑知识与技术(经验技巧) 2019(10)
- [4].快速掌握编译器设计方法[J]. 软件 2018(05)
- [5].一种新的大容量SRAM编译器设计[J]. 微电子学 2015(04)
- [6].可信编译器构造的翻译确认方法简述[J]. 计算机科学 2014(S1)
- [7].计算智能技术在分布式多编译器中的应用分析[J]. 节水灌溉 2011(05)
- [8].优化编译器的设计[J]. 群文天地 2011(14)
- [9].关于C编译器对——运算编译的研究[J]. 电脑知识与技术 2010(18)
- [10].基于编译器优化的嵌入式软件缺陷分析方法[J]. 航天控制 2016(05)
- [11].一种农业设备嵌入式数据库预编译器设计与实现[J]. 农业网络信息 2012(03)
- [12].编译器无关性编码在微控制器中的优势[J]. 单片机与嵌入式系统应用 2010(02)
- [13].可信编译器关键技术研究[J]. 计算机工程与科学 2010(08)
- [14].可视编译器的设计与实现[J]. 计算机与现代化 2010(10)
- [15].类高级语言编译器的设计与实现[J]. 内蒙古科技与经济 2009(16)
- [16].超强通用编译器优化工具 准确率是传统方法的5倍[J]. 计算机与网络 2020(02)
- [17].一种静态的编译器重复缺陷报告识别方法[J]. 中国科学:信息科学 2019(10)
- [18].魂芯DSP上复数类型的支持和优化[J]. 计算机系统应用 2017(09)
- [19].软件/开发工具[J]. 今日电子 2014(02)
- [20].出具证明编译器中代码优化与程序规范转换[J]. 小型微型计算机系统 2011(07)
- [21].NI LabVIEW2010优化编译器,加速代码执行[J]. 电子测量技术 2010(08)
- [22].运行速度大突破 华为《方舟编译器》详解[J]. 计算机与网络 2019(09)
- [23].典型编译器自动向量化效果评估与分析[J]. 计算机科学 2013(04)
- [24].一种支持软件演化过程描述语言的编译器的设计分析[J]. 绵阳师范学院学报 2013(02)
- [25].基于C语言编译器的词法分析浅析[J]. 电脑知识与技术 2013(24)
- [26].C-编译器的扫描程序与分析程序设计[J]. 信息与电脑(理论版) 2012(14)
- [27].FANUC宏编译器的应用[J]. 精密制造与自动化 2008(04)
- [28].高速SRAM编译器时序算法[J]. 电子与封装 2016(07)
- [29].出具证明编译器中线性整数命题证明的自动生成[J]. 小型微型计算机系统 2011(06)
- [30].即时编译器辅助的垃圾收集中的插桩算法研究[J]. 小型微型计算机系统 2010(04)