Dynamic Verification of MPI Programs for Deadlocks and Invalid End States
School of Computing, University of Utah

We examine the problem of verifying MPI programs for the absence of deadlocks and local assertion violations through dynamic (runtime) formal verification in which the processes of a given MPI program are executed under the control of an interleaving scheduler. The development of such an algorithm requires several challenges to be overcome in ensuring full coverage (as opposed to a testing tool that can miss bugs)

Our new algorithm POE, is based on the following novel ideas. First, it rewrites wildcard receives to specific receives, one for each sender that can potentially match with the receive. It then recursively explores each case of the specific receives. The list of potential senders matching a receive is determined through a runtime algorithm (POE), that exploits MPI` operational ordering semantics. Our verification tool ISP that incorporates this algorithm efficiently verifies several programs and finds bugs in many cases where existing dynamic informal verification tools may miss them.


This document was translated from LATEX by HEVEA.