Distributed snapshots: determining global states of distributed systems
ACM Transactions on Computer Systems (TOCS)
Symbolic execution and program testing
Communications of the ACM
Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem
Integrating Temporal Assertions into a Parallel Debugger
Euro-Par '02 Proceedings of the 8th International Euro-Par Conference on Parallel Processing
Causal distributed assert statements
Causal distributed assert statements
Combining symbolic execution with model checking to verify parallel numerical programs
ACM Transactions on Software Engineering and Methodology (TOSEM)
Principles of Model Checking (Representation and Mind Series)
Principles of Model Checking (Representation and Mind Series)
Formal verification of practical MPI programs
Proceedings of the 14th ACM SIGPLAN symposium on Principles and practice of parallel programming
Equivalence Checking of Static Affine Programs Using Widening to Handle Recurrences
CAV '09 Proceedings of the 21st International Conference on Computer Aided Verification
Generalized symbolic execution for model checking and testing
TACAS'03 Proceedings of the 9th international conference on Tools and algorithms for the construction and analysis of systems
CAV'07 Proceedings of the 19th international conference on Computer aided verification
Fast and Message-Efficient Global Snapshot Algorithms for Large-Scale Distributed Systems
IEEE Transactions on Parallel and Distributed Systems
KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs
OSDI'08 Proceedings of the 8th USENIX conference on Operating systems design and implementation
Efficient verification of halting properties for MPI programs with wildcard receives
VMCAI'05 Proceedings of the 6th international conference on Verification, Model Checking, and Abstract Interpretation
Automatic formal verification of MPI-based parallel programs
Proceedings of the 16th ACM symposium on Principles and practice of parallel programming
Formal analysis of message passing
VMCAI'11 Proceedings of the 12th international conference on Verification, model checking, and abstract interpretation
Loop invariant symbolic execution for parallel programs
VMCAI'12 Proceedings of the 13th international conference on Verification, Model Checking, and Abstract Interpretation
Hi-index | 0.00 |
We introduce the notion of collective assertions for message-passing-based parallel programs with distributed memory, such as those written using the Message Passing Interface. A single collective assertion comprises a set of locations in each process and an expression on the global state. The semantics are defined as follows: whenever control in a process reaches one of the locations, a "snapshot" of the local state of that process is sent to a coordinator; once a snapshot has been received from each process, the expression is evaluated on the global state formed by uniting the snapshots. We have extended the Toolkit for Accurate Scientific Software (TASS), a verifier based on symbolic execution and explicit state enumeration, to check that collective assertions hold on all possible executions of a C/MPI program. We give several examples of such programs, show that many properties of them are naturally expressed as collective assertions, and use TASS to verify or refute these.