Practical Model-Checking Method for Verifying Correctness of MPI Programs

Formal program verification often requires creating a model of the program and running it through a model-checking tool. However, this model-creation step is itself error prone, tedious, and difficult for someone not familiar with formal verification. In this paper, we describe a tool for verifying correctness of MPI programs that does not require the creation of a model and instead works directly on the MPI program. Our tool uses the MPI profiling interface, PMPI, to trap MPI calls and hand over control of the MPI function execution to a scheduler. The scheduler verifies correctness of the program by executing all "relevant" interleavings of the program. The scheduler records an initial trace and replays its interleaving variants by using dynamic partial-order reduction. We describe the design and implementation of the tool and compare it with our previous work based on model checking.

[1]  Dhabaleswar K. Panda,et al.  Application-Transparent Checkpoint/Restart for MPI Programs over InfiniBand , 2006, 2006 International Conference on Parallel Processing (ICPP'06).

[2]  Victor Samofalov,et al.  Automated, scalable debugging of MPI programs with Intel® Message Checker , 2005, SE-HPCS '05.

[3]  Klaus Havelund,et al.  Model checking programs , 2000, Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.

[4]  Gerard J. Holzmann,et al.  The SPIN Model Checker , 2003 .

[5]  Jack Dongarra,et al.  Recent Advances in Parallel Virtual Machine and Message Passing Interface, 15th European PVM/MPI Users' Group Meeting, Dublin, Ireland, September 7-10, 2008. Proceedings , 2008, PVM/MPI.

[6]  George S. Avrunin,et al.  Verification of MPI-Based Software for Scientific Computation , 2004, SPIN.

[7]  Patrice Godefroid,et al.  Model checking for programming languages using VeriSoft , 1997, POPL '97.

[8]  Yu Yang,et al.  Gauss: A Framework for Verifying Scientific Computing Software , 2006, Electron. Notes Theor. Comput. Sci..

[9]  Michael M. Resch,et al.  Correctness Checking of MPI One-Sided Communication Using Marmot , 2006, PVM/MPI.

[10]  Stephan Merz,et al.  Model Checking , 2000 .

[11]  Ganesh Gopalakrishnan,et al.  Semantics driven dynamic partial-order reduction of MPI-based parallel programs , 2007, PADTAD '07.

[12]  Stephen F. Siegel Model Checking Nonblocking MPI Programs , 2007, VMCAI.

[13]  Rajeev Thakur,et al.  Formal Verification of Programs That Use MPI One-Sided Communication , 2006, PVM/MPI.

[14]  Hua Chen,et al.  MPI‐CHECK: a tool for checking Fortran 90 MPI programs , 2003, Concurr. Comput. Pract. Exp..

[15]  Yu Yang,et al.  Distributed Dynamic Partial Order Reduction Based Verification of Threaded Software , 2007, SPIN.

[16]  Bronis R. de Supinski,et al.  Dynamic Software Testing of MPI Applications with Umpire , 2000, ACM/IEEE SC 2000 Conference (SC'00).

[17]  Robert Latham,et al.  Implementing Byte-Range Locks Using MPI One-Sided Communication , 2005, PVM/MPI.

[18]  Patrice Godefroid,et al.  Dynamic partial-order reduction for model checking software , 2005, POPL '05.