流处理器以其强大的计算能力、较低的功耗和灵活的可编程性,成为当前高性能计算系统定制加速部件的主要选择之一。然而,原本面向多媒体领域开发的流编译器,在处理数据依赖关系更加复杂的科学计算应用时,表现出较差的适应性,对流存储系统特征的利用十分有限,存储墙问题极为严重,致使当前科学计算流程序性能的好坏完全依赖于程序员的编程质量。因此,本项目提出面向科学计算采用编译技术发掘利用流处理器的存储特征,优化其存储性能,以有效缓解存储墙问题。不同于传统处理器的全新的流计算模型、编程模型、体系结构及存储系统,为流处理器的编译存储优化技术带来了巨大挑战。本项目将分析典型科学计算应用访问流存储系统的行为与瓶颈,从优化片上存储器局部性、隐藏访存延迟和避免片上存储器溢出等方面进行深入的研究,面向科学计算实现流处理器存储特征的自动发掘利用和存储性能的自动优化,为流处理器在高性能计算中的应用提供支持。
Stream;Stream Programming;Stream Processor;Scientific Computing;Memory Wall
本项目重点研究了如何通过编译优化技术来改善流处理器的存储性能,按照计划完成了全部研究工作,并对研究内容进行了扩展。本项目在分析了大量具有不同性能特征的科学计算流程序的访存行为后,面向科学计算从优化片上存储器局部性、隐藏访存延迟和避免SRF溢出等方面进行了深入的研究优化LRF局部性方面,提出了流转置方法ST,该方法根据程序的复用信息重新组织数据,将簇间记录复用等价地转换为同一运算簇内的记录复用,同时,为避免因数据重组导致的存储体冲突,该方法给出了发生存储体冲突的判别定理,并采用循环分割技术避免冲突发生;优化SRF局部性方面,提出了CBSR方法,该方法是国际上第一个自动发掘变界流完整复用的方法,由一系列创新性的理论、机制和算法组成,包括首次提出的流复用识别理论、首次定义并构建的用于描述流复用信息的流复用图(SRG)、基于SRG发掘流完整复用的程序变换算法和SRF压力评估与缓解算法等。CBSR方法有效发掘了变界流之间的完整复用,避免了数据的重复加载,改进了SRF局部性,提升了程序性能;隐藏访存延迟优化方面,提出了一种基于SRG的SRF资源分配避免算法SRFACA,在SRF预取开销更小的同时,避免了SRF资源分配冲突,增加了预取的有效性;避免SRF 溢出的优化方面,提出了基于SRG的循环分块算法。本项目基于SF95编译器实现了项目提出的各种编译存储优化方法,并使用科学计算领域的典型常用测试程序来进行评测,与当前流编译器的流调度方法相比,取得了更优的性能。 项目研究期间。发表学术论文27篇,其中SCI检索7篇,EI检索14篇,在国际相关学术领域引起关注;相关研究获军队科技进步一等奖2项;已公示专利6项。项目期间,培养毕业博士生5人。本项目提出的面向科学计算流处理器的编译存储优化关键技术研,能够大大改善科学计算应用在流处理上的访存性能,有效提升了流处理器处理科学激素应用的能力,对流处理器在高性能领域的应用有重大意义。