Abstract
Development of concurrent software requires the programmer to be aware of non-determinism, data races, and deadlocks. MPI (message passing interface) is a popular standard for writing message oriented distributed applications. Some messages in MPI systems can be processed by one of the many machines and in many possible orders. This non-determinism can affect the result of an MPI application. The alternate results may or may not be correct. To verify MPI applications, we need to check all these possible orderings and use an application specific oracle to decide if these orderings give correct output. MPJ Express is an open source Java implementation of the MPI standard. We developed a Java based model of MPJ Express, where processes are modeled as threads, and which can run unmodified MPI Java programs on a single system. This enabled us to adapt the Java PathFinder explicit state software model checker (JPF) using a custom listener to verify our model running real MPI Java programs. We evaluated our approach using small examples where model checking revealed message orders that would result in incorrect system behavior.
- E. M. Clarke, O. Grumberg, and D. Peled. Model Checking. MIT press, 1999. Google Scholar
Digital Library
- G. Gopalakrishnan, R. M. Kirby, S. Siegel, R. Thakur, W. Gropp, E. Lusk, B. R. De Supinski, M. Schulz, and G. Bronevetsky. Formal Analysis of MPI-based Parallel Programs. Communications of the ACM, 54(12): 82--91, 2011. Google Scholar
Digital Library
- K. Havelund and T. Pressburger. Model Checking Java Programs Using Java Pathfinder. International Journal on Software Tools for Technology Transfer, 2(4):366--381, 2000.Google Scholar
Cross Ref
- R. van Galen. Towards Verification of MPJ-based Java Programs. 15th Twente Student Conference on IT, 15, 2011.Google Scholar
Index Terms
Verification of MPI Java programs using software model checking
Recommendations
Verification of MPI Java programs using software model checking
PPoPP '16: Proceedings of the 21st ACM SIGPLAN Symposium on Principles and Practice of Parallel ProgrammingDevelopment of concurrent software requires the programmer to be aware of non-determinism, data races, and deadlocks. MPI (message passing interface) is a popular standard for writing message oriented distributed applications. Some messages in MPI ...
API conformance verification for Java programs
ICFEM'10: Proceedings of the 12th international conference on Formal engineering methods and software engineeringSoftware components, services, or modules are used via their application programming interface (API). For any sufficiently complex component, there are strict rules on the order and context in which particular methods of the API can be invoked. For ...
Model Checking of Software Components: Combining Java PathFinder and Behavior Protocol Model Checker
SEW '06: Proceedings of the 30th Annual IEEE/NASA Software Engineering WorkshopAlthough there exist several software model checkers that check the code against properties specified e.g. via a temporal logic and assertions, or just verifying low-level properties (like unhandled exceptions), none of them supports checking of ...






Comments