Combining Symbolic Execution and Model Checking to Verify MPI Programs
Message passing is the standard paradigm of programming in high-performance computing. However, verifying Message Passing Interface (MPI) programs is challenging, due to the complex program features (such as non-determinism and non-blocking operations). In this work, we present MPI symbolic verifier...
Gespeichert in:
Hauptverfasser: | , , , , , , , |
---|---|
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext bestellen |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | Message passing is the standard paradigm of programming in high-performance
computing. However, verifying Message Passing Interface (MPI) programs is
challenging, due to the complex program features (such as non-determinism and
non-blocking operations). In this work, we present MPI symbolic verifier
(MPI-SV), the first symbolic execution based tool for automatically verifying
MPI programs with non-blocking operations. MPI-SV combines symbolic execution
and model checking in a synergistic way to tackle the challenges in MPI program
verification. The synergy improves the scalability and enlarges the scope of
verifiable properties. We have implemented MPI-SV (footnote:
https://mpi-sv.github.io) and evaluated it with 111 real-world MPI verification
tasks. The pure symbolic execution-based technique successfully verifies 61 out
of the 111 tasks (55\%) within one hour, while in comparison, MPI-SV verifies
100 tasks (90\%). On average, compared with pure symbolic execution, MPI-SV
achieves 19x speedups on verifying the satisfaction of the critical property
and 5x speedups on finding violations. |
---|---|
DOI: | 10.48550/arxiv.1803.06300 |