论文部分内容阅读
数值模拟是计算科学的重要组成部分,基于结构化网格的离散方法在数值计算方法中占有重要的位置,其热点计算stencil计算是高性能计算领域的七个主要模式之一。stencil计算的计算访存比低,主存带宽受限严重。学术界和产业界研制了多款面向HPC的众核加速芯片,但是均存在能耗高,绝对性能有限的问题。数据流体系结构因为控制结构简单、数据通信的速度快、可支持超长流水线等优点,成为解决科学计算能效问题的一种令人期待的解决方案。 中科院计算所正在研制具有新型结构的SPU众核处理器,该处理器具有阵列结构,混合了静态数据流、多线程、SIMD三种并行模式,并向用户暴露了复杂的层次存储结构。如何把用户程序转化为指令数据流图,并优化地映射到SPU阵列结构上是编程环境必须解决的问题,也是SPU结构评估的基础。 为了简化SPU加速器上的用户编程、提高SPU的硬件利用率,本人参与设计和实现了一个针对SPU的、面向规则计算的代码生成和优化的编译器。 本文的主要贡献如下: 1、在变量分析的基础上实现了SPU数据布局优化,使程序指令数目减少了30%以上。 2、建立了简洁高效的指令数据流图的中间表示。该中间表示便于功能扩展、并便于移植到其他的编译平台。 3、设计和实现了针对单基本块循环体的数据流图生成、优化映射和自动代码生成。重点设计了,AST到指令数据流图的自动生成算法,基于改进的关键路径优先的启发式数据流图优化映射方法。 4、用5个典型程序评估了编译器代码优化的效果。测试结果,给出了硬件指令的出度需求,表明数据布局优化可以减少指令数30%以上,循环展开在提高资源利用率的同时最多可减少指令14%,优化映射算法则最多可减少40%的通信量。