2020 · 20 citations · 59 references
ComputingComputer ScienceHigh-performance ComputingFormal MethodsMessage PassingParallel ComputingControl-flow AnalysisData-flow AnalysisModel CheckingSymbolic ExecutionVerificationHigh-performance Computing SystemsNon-blocking CallsProgram VerificationSymbolic Execution EnginesSymbolic Execution Of ProtocolsSymbolic Model CheckingSymbolic Verification
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-SV1 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.
59
E. M. Clarke, Orna Grümberg, D. Long · 1996 · 6.9K citations
Patrick Cousot, Radhia Cousot · 1977 · 6.2K citations
Gerard J. Holzmann · IEEE Transactions on Software Engineering · 1997 · 3.8K citations
Symbolic execution and program testing
James C. King · Communications of the ACM · 1976 · 3K citations · Full text