论文部分内容阅读
计算科学为所有学科向定量化和精确化发展提供了重要基础,结构化网格计算是其中应用极其广泛的计算模式之一。网格计算通常计算访存比较低,对带宽要求很高,在主流HPC平台上普遍执行效率较低。数据流结构因其天然并行性,超长指令流水,能耗较低等特点,在学术界和工业界都受到了很大的重视。 中科院计算所针对科学计算应用研发了新型异构处理器SPU,其加速部件ACC基于数据流结构设计,提供Streaming、SIMD、Dataflow三层执行模式以及复杂的层次存储结构。为了充分发挥SPU的硬件优势,减轻开发人员负担,本人参与了SPU编译器的设计实现,面向高级语言应用,支持异构协同代码自动生成和性能调优。 本文的主要贡献如下: 1、针对ACC的SIMD执行模式的编译支持。本文研究了SIMD的循环划分方法,以及如何通过数组区域分析实现SIMD并行的数据划分和重组,并将数据重组参数传递给运行时程序代码生成模块,以实现完美的SIMD并行计算。 2、软件循环的编译支持与2.5D循环分块优化。本文针对科学计算应用中常见的非紧嵌的DOALL循环,实现了基础的编译支持。同时根据stencil计算的特点,研究了在ACC结构上实现数据重用的2.5D-blocking优化方法。经实验测试该优化策略针对3D7P应用相比较原来的最优性能获得了19%左右的性能提升。 3、针对SPU的异构特性实现了主核部分运行时代码的自动生成,进一步减轻开发人员负担。 4、改进指令流图的PE优化映射,引入新的映射策略和调优参数,以合理的利用硬件资源的特性。对4个典型程序的模拟器仿真实验表明,改进后的映射算法结合调优最多可以实现1.34x-2.81x倍的性能提升。最后,通过总结调优参数的统计特征,进一步缩小了调优空间。