Combining Symbolic Execution and Model Checking to Verify MPI Programs Hengbiao Yu1∗, Zhenbang Chen1∗, Xianjin Fu1,2, Ji Wang1,2∗, Zhendong Su3, Jun Sun4, Chun Huang1, Wei Dong1 1College of Computer, National University of Defense Technology, Changsha, China 2State Key Laboratory of High Performance Computing, National University of Defense Technology, Changsha, China 3Department of Computer Science, ETH Zurich, Switzerland 4School of Information Systems, Singapore Management University, Singapore {hengbiaoyu,zbchen,wj}@nudt.edu.cn,
[email protected],
[email protected],
[email protected] ABSTRACT South Korea. ACM, New York, NY, USA, 17 pages. https://doi.org/XX.XXXX/ Message passing is the standard paradigm of programming in high- XXXXXXX.XXXXXXX performance computing. However, verifying Message Passing In- terface (MPI) programs is challenging, due to the complex program 1 INTRODUCTION features (such as non-determinism and non-blocking operations). In this work, we present MPI symbolic verifier (MPI-SV), the first Nowadays, an increasing number of high-performance computing symbolic execution based tool for automatically verifying MPI pro- (HPC) applications have been developed to solve large-scale prob- grams with non-blocking operations. MPI-SV combines symbolic lems [11]. The Message Passing Interface (MPI) [78] is the current execution and model checking in a synergistic way to tackle the de facto standard programming paradigm for developing HPC appli- challenges in MPI program verification. The synergy improves the cations. Many MPI programs are developed with significant human scalability and enlarges the scope of verifiable properties. We have effort. One of the reasons is that MPI programs are error-prone implemented MPI-SV1 and evaluated it with 111 real-world MPI because of complex program features (such as non-determinism verification tasks.