论文部分内容阅读
显式并行语言和自动并行化编译是高性能计算平台上并行软件开发的主要途径。无论哪种程序设计模式,编译器的一个重要工作就是充分发掘和优化程序中的并行性。并行语言的优化编译器,对用户显式指出的并行性进行优化;自动并行化编译工具,则自动挖掘串行应用程序隐藏的并行性,简化了并行软件的开发,并解决了遗产代码的可重用问题。计算平台的复杂性和多样性以及应用程序中动态特性的增加,使得目前的并行优化效果不是很理想,平台的适应性是我们要着力解决的问题。分布式存储体系上的应用,其性能受底层通信系统的影响尤为明显。并行程序性能优化是一项必不可少的工作,但是,手工的性能调优烦琐且冗长;优化策略的选择或关键参数的确定跟程序行为、计算平台等都密切相关;反馈指导的适应性编译,通过获取面向目标平台的程序动态信息,实现对于程序的自动的性能调优。本文从一个特定优化出发——把反馈编译应用于流水计算的性能调优,探索了适应性优化的技术可行性问题。流水计算是获得科学计算中常出现的DOACROSS循环的并行性的优化技术之一,流水粒度是获取良好性能的关键。对于流水计算的性能调优,本文的主要贡献:1)比较了不同通信方式对流水计算的执行性能的影响,建立了一个基于非阻塞发送/阻塞接收通信模式的一维流水性能代价模型,从流水分块的执行特性推导整个流水循环套的执行时间,动态刻画流水计算的执行过程。2)提出并实现了以反馈指导方式进行的流水性能调优的框架,该框架结合静态估算方式和运行时优化的优点。利用典型分块收集程序片段的运行时信息,准确度较高。我们着重初始分块、临界分块的选择策略,这对有效减少插桩运行的开销问题是非常重要的。在不同计算平台的对NAS的NPB1.0中三个准应用级程序的测试数据表明,本文提出的适应性优化框架,具有好的平台适应性,能获得较好的流水并行性能,也同时证明流水并行的代价模型具有相当的准确性。