Combining Symbolic Execution and Model Checking to Verify MPI Programs

03/16/2018
by   Hengbiao Yu, et al.
0

Message Passing Interface (MPI) is the standard paradigm of programming in high performance computing. MPI programming takes significant effort, and is error-prone. Thus, effective tools for analyzing MPI programs are much needed. On the other hand, analyzing MPI programs itself is challenging because of non-determinism caused by program inputs and non-deterministic operations. Existing approaches for analyzing MPI programs either do not handle inputs or fail to support programs with mixed blocking and non-blocking operations. This paper presents MPI symbolic verifier (MPI-SV), the first symbolic execution based tool for verifying MPI programs having both blocking and non-blocking operations. To ensure soundness, we propose a blockingdriven matching algorithm to safely handle non-deterministic operations, and a method to soundly and completely model the equivalent behavior of a program execution path. The models of MPI program paths are generated on-the-fly during symbolic execution, and verified w.r.t. the expected properties by model checking. To improve scalability, MPI-SV uses the results of model checking to prune redundant paths. We have implemented MPI-SV and evaluated it on the verification of deadlock freedom for 108 real-world MPI tasks. The pure symbolic execution based technique can successfully verify 61 out of the 108 tasks (56 hour, while in comparison, MPI-SV can verify 94 tasks (87 On average, MPI-SV also achieves 7.25X speedup on verifying deadlock freedom and 2.64X speedup on finding deadlocks. These experimental results are promising, and demonstrate MPI-SV's effectiveness and efficiency.

READ FULL TEXT
research
03/25/2018

DMTCP Checkpoint/Restart of MPI Programs via Proxies

MPI accomplishes portable, standardized message-passing between processe...
research
10/16/2021

Verification of MPI programs

In this paper, we outline an approach to verifying parallel programs. A ...
research
01/10/2019

Integrating Blocking and Non-Blocking MPI Primitives with Task-Based Programming Models

In this paper we present the Task-Aware MPI library (TAMPI) that integra...
research
11/12/2020

Fibers are not (P)Threads: The Case for Loose Coupling of Asynchronous Programming Models and MPI Through Continuations

Asynchronous programming models (APM) are gaining more and more traction...
research
12/10/2013

Towards deductive verification of MPI programs against session types

The Message Passing Interface (MPI) is the de facto standard message-pas...
research
07/30/2020

New approach to MPI program execution time prediction

The problem of MPI programs execution time prediction on a certain set o...
research
03/04/2022

Machine Learning for CUDA+MPI Design Rules

We present a new strategy for automatically exploring the design space o...

Please sign up or login with your details

Forgot password? Click here to reset