Abstract
Chapel is a new programming language targeting high performance computing. Chapel makes it easier to write parallel code, but is still subject to concurrency problems such as deadlocks, race conditions, and nondeterministic results. In theory, model checking and symbolic execution tools can help with these problems, but certain Chapel primitives are difficult to represent in the models used by existing tools. For example, some primitives dynamically create arbitrarily nested scopes with threads executing within those scopes. We present (1) a new formal model that naturally represents these dynamic concepts and (2) a new prototype model checking/symbolic execution tool for Chapel programs that uses this model as its intermediate representation. We describe how the tool translates Chapel into this IR and the results of applying the tool to several synthetic Chapel programs.
Keywords
- Model Check
- Symbolic Execution
- Outgoing Transition
- Partial Order Reduction
- State Space Explosion Problem
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
This is a preview of subscription content, access via your institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Allen, E., Chase, D., Hallett, J., Luchangco, V., Maessen, J.W., Ryu, S., Steele Jr., G.L., Tobin-Hochstadt, S.: The Fortress language specification, version 1.0 (March 2008), http://labs.oracle.com/projects/plrg/Publications/fortress.1.0.pdf
Barrett, C., Tinelli, C.: CVC3. In: Damm, W., Hermanns, H. (eds.) CAV 2007. LNCS, vol. 4590, pp. 298–302. Springer, Heidelberg (2007)
Charles, P., Grothoff, C., Saraswat, V., Donawa, C., Kielstra, A., Ebcioglu, K., von Praun, C., Sarkar, V.: X10: an object-oriented approach to non-uniform cluster computing. In: Proceedings of the 20th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2005, pp. 519–538. ACM, New York (2005)
Clarke, L.A.: A system to generate test data and symbolically execute programs. IEEE Trans. Softw. Eng. 2, 215–222 (1976)
Cray, Inc.: The Chapel parallel programming language (2012), http://chapel.cray.com/
Demartini, C., Iosif, R., Sisto, R.: dSPIN: A dynamic extension of SPIN. In: Dams, D.R., Gerth, R., Leue, S., Massink, M. (eds.) SPIN 1999. LNCS, vol. 1680, pp. 261–276. Springer, Heidelberg (1999)
Dijkstra, E.W.: Guarded commands, nondeterminacy and formal derivation of programs. Commun. ACM 18(8), 453–457 (1975)
Flatt, M., PLT: The Racket reference, version 5.3.1, http://docs.racket-lang.org/reference/ (retrieved November 19, 2012)
Godefroid, P.: Partial-Order Methods for the Verification of Concurrent Systems. LNCS, vol. 1032. Springer, Heidelberg (1996)
Holzmann, G.J.: The Spin Model Checker. Addison-Wesley, Boston (2004)
Khurshid, S., Păsăreanu, C.S., Visser, W.: Generalized symbolic execution for model checking and testing. In: Garavel, H., Hatcliff, J. (eds.) TACAS 2003. LNCS, vol. 2619, pp. 553–568. Springer, Heidelberg (2003)
King, J.C.: Symbolic execution and program testing. Communications of the ACM 19(7), 385–394 (1976)
Message Passing Interface Forum: MPI: A message-passing interface standard, version 3.0 (September 2012), http://www.mpi-forum.org/docs/docs.html
OpenMP Architecture Review Board: OpenMP application program interface, version 3.1 (July 2011), http://www.openmp.org/mp-documents/OpenMP3.1.pdf
Parr, T.: ANTLR Parser Generator, http://www.antlr.org
Siegel, S.F., Mironova, A., Avrunin, G.S., Clarke, L.A.: Combining symbolic execution with model checking to verify parallel numerical programs. ACM TOSEM 17(2), Article 10, 1–34 (2008)
Siegel, S.F., Zirkel, T.K.: TASS: The Toolkit for Accurate Scientific Software. Mathematics in Computer Science 5(4), 395–426 (2011)
Yelick, K.A., Semenzato, L., Pike, G., Miyamoto, C., Liblit, B., Krishnamurthy, A., Hilfinger, P.N., Graham, S.L., Gay, D., Colella, P., Aiken, A.: Titanium: A high-performance Java dialect. Concurrency - Practice and Experience 10(11-13), 825–836 (1998)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2013 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Zirkel, T.K., Siegel, S.F., McClory, T. (2013). Automated Verification of Chapel Programs Using Model Checking and Symbolic Execution. In: Brat, G., Rungta, N., Venet, A. (eds) NASA Formal Methods. NFM 2013. Lecture Notes in Computer Science, vol 7871. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-38088-4_14
Download citation
DOI: https://doi.org/10.1007/978-3-642-38088-4_14
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-38087-7
Online ISBN: 978-3-642-38088-4
eBook Packages: Computer ScienceComputer Science (R0)