A Sound Reduction of Persistent-sets for Deadlock Detection in MPI Applications Subodh Sharma 1 ⋆⋆ , Ganesh Gopalakrishnan 2 , and Greg Bronevetsky 3 1 University of Oxford, subodh.sharma@cs.ox.ac.uk 2 University of Utah, ganesh@cs.utah.edu 3 Lawrence Livermore National Laboratory, bronevetsky1@llnl.gov Abstract. Formal dynamic analysis of Message Passing Interface (MPI) pro- grams is crucially important in the context of developing HPC applications. Ex- isting dynamic verification tools for MPI programs suer from exponential sched- ule explosion, especially when multiple non-deterministic receive statements are issued by a process. In this paper, we focus on detecting message-orphaning deadlocks within MPI programs. For this analysis target, we describe a sound heuristic that helps avoid schedule explosion in most practical cases while not missing deadlocks in practice. Our method hinges on initially computing the po- tential non-deterministic matches as conventional dynamic analyzers do, but then including only the entries which are found relevant to cause a refusal deadlock (essentially a macroscopic-view persistent-set reduction technique). Experimen- tal results are encouraging. 1 Introduction The Message Passing Interface (MPI, [9]) is one of the central APIs used in large-scale high performance computing (HPC) simulations. Most of today’s supercomputers and high performance clusters are programmed using MPI, and this trend is expected to continue [6]. There are also embedded system communication standards built around message passing, such as MCAPI [8]. In this paper, we study the problem of adequately testing message passing programs using formal techniques for the purpose of deadlock detection. While our research is conducted with MPI-specific details, with relatively minor modifications our results also apply to other message passing paradigms. In MPI, message send commands directly address the destination process while message receives are of two types: either directly address the source process (called deterministic receives) or the non-deterministic (or “wildcard”) receives that can receive from any sender that targets the process issuing such a receive. The sends and receives issued by an MPI process that target the same destination or source from the same process are required to match in program order (the “non-overtaking rule of MPI”, Section 3.5 in [9]). The MPI runtime computes the eligible matches for each receive operation. The matching operations are called match pairs. At any runtime state of an MPI program, a deterministic receive will always have a single matching send, thus, This research has been supported by NSF OCI 1148127 and EPSRC project EP/G026254/1. ⋆⋆ The work was performed when the author was in University of Utah