论文部分内容阅读
显式并行程序中通信模式的抽取,对于并行程序性能调优具有重要的意义。很多与并行程序性能相关的优化都需要对通信特征进行分析。另外在并行程序设计和开发过程中,对于程序正确性的调试和验证也是和通信相关。
现有静态编译框架不足以支持通信特征分析时。通过我们对典型例程NPB并行测试程序集的分析表明,MPI的通信可以大致分为三类,组通信大多是静态类型的,比较适合采用编译技术来分析;而点对点通信主要为准静态和动态类型。本文设计了基于编译分析技术的静态分析框架,在常规的优化编译器上扩展了多值表达式分析、谓词分析、符号表达式分析以及多值符号实例化。该方案可以对NPB中大多数准静态类型的通信进行有效的分析。
仍有动态通信和部分准静态通信编译时不能分析,对于并行程序通信模式分析的通用做法还是采用外部分析工具在运行时收集踪迹信息,进行事后分析。而这么做的一个明显缺点是常常需要较长的运行时开销。我们提出采用编译分析与通信切片程序相结合的方法来进行MPI通信特征分析。在对准静态和动态通信静态编译分析失效时,我们采用程序切片技术,对于显式并行程序的通信特征进行低开销的抽取。在归纳了多数应用程序的通信特征和分析需求后,我们提出通信切片程序的概念,设计并实现了通信切片的构造,以及对于切片削减度和相似度的度量方法。通过我们对于NPB程序的测试结果表明,该方法可以在维持通信特征的同时,显著减少程序的执行时间,具有一定的适用面。该技术的提出弥补了编译分析技术处理准静态和动态通信特征时的局限,同时也降低了事后分析运行时开销。在应用于MPI进程映射和并行程序的验证和调试方面均具有一定的意义。