一句话:用符号执行抽取 MPI 程序的符号路径并合成全局变换,将阻塞通信转为非阻塞通信以重叠通信与计算。
在高性能计算中,用通信与计算的重叠来优化并行程序是常见手段,但该优化通常依赖手工完成,自动化难度大。本文报告了作者近期的一项进展:一种基于符号执行的 MPI 程序自动优化方法,核心思想是在保持计算正确性的前提下,把阻塞通信操作转换为非阻塞通信操作。具体而言,方法首先利用符号执行从 MPI 程序中提取符号路径,在各条路径上识别潜在的优化位置,随后依据这些候选位置合成一个全局的优化变换,并将其应用到原程序以提升性能。初步实验结果表明该方法是可行且有前景的。本文为扩展摘要,主要报告方法的总体思路与早期实验进展。
Overlapping communication with computation is a common way to optimize parallel programs in high-performance computing. However, this optimization is often carried out manually and is challenging to be automated to achieve a better performance. In this extended abstract, we report our recent progress of a symbolic execution-based automatic method for optimizing Message Passing Interface (MPI) programs by overlapping communication and computation. The key idea is to transform blocking communication operations into non-blocking ones while preserving the correctness of computation. We employ symbolic execution to extract the symbolic paths from the MPI program, based on which we can find the potential locations for optimization in each path. Then, we synthesize a global optimization transformation based on the potential optimization locations. The MPI program's performance can be improved after applying the global optimization transformation. The preliminary experimental results indicate the promise of our method.