skip to main content
10.1145/1146238.1146256acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
Article

Using model checking with symbolic execution to verify parallel numerical programs

Published: 21 July 2006 Publication History

Abstract

We present a method to verify the correctness of parallel programs that perform complex numerical computations, including computations involving floating-point arithmetic. The method requires that a sequential version of the program be provided, to serve as the specification for the parallel one. The key idea is to use model checking, together with symbolic execution, to establish the equivalence of the two programs.

References

[1]
T. Ball and S. K. Rajamani. Automatically validating temporal safety properties of interfaces. In M. B. Dwyer, editor, Model Checking Software: 8th International SPIN Workshop, Toronto, Canada, May 19-20, 2001, Proceedings, volume 2057 of Lecture Notes in Computer Science, pages 103--122. Springer, 2001.
[2]
R. S. Boyer, B. Elspas, and K. N. Levitt. SELECT-a formal system for testing and debugging programs by symbolic execution. In Proceedings of the International Conference on Reliable Software, pages 234--245. ACM Press, 1975.
[3]
L. A. Clarke. A system to generate test data and symbolically execute programs. IEEE Transactions on Software Engineering, 2(3):215--222, 1976.
[4]
R. Cousot, editor. Verification, Model Checking, and Abstract Interpretation: 6th International Conference, VMCAI 2005, Paris, January 17-19, 2005, Proceedings, volume 3385 of Lecture Notes in Computer Science, 2005.
[5]
T. Elmas, S. Tasiran, and S. Qadeer. Vyrd: verifying concurrent programs by runtime refinement-violation detection. In PLDI '05: Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation, pages 27--37, New York, NY, USA, 2005. ACM Press.
[6]
D. Goldberg. What every computer scientist should know about floating-point arithmetic. ACM Computing Surveys, 23(1):5--48, Mar. 1991.
[7]
S. Graf and L. Mounier, editors. Model Checking Software: 11th International SPIN Workshop, Barcelona, Spain, April 1-3, 2004, Proceedings, volume 2989 of Lecture Notes in Computer Science. Springer, 2004.
[8]
W. Gropp, E. Lusk, and A. Skjellum. Using MPI: Portable Parallel Programming with the Message-Passing Interface. MIT Press, 1999.
[9]
S. L. Hantler and J. C. King. An introduction to proving the correctness of programs. ACM Computing Surveys, 8(3):331--353, 1976.
[10]
G. J. Holzmann. The Spin Model Checker. Addison-Wesley, 2004.
[11]
IEEE. 754-1985 IEEE standard for binary floating-point arithmetic, 1985.
[12]
IEEE. 854-1987 IEEE standard for radix-independent floating-point arithmetic, 1987.
[13]
G. E. Karniadakis and R. M. Kirby II. Parallel Scientific Computing in C++ and MPI. Cambridge University Press, 2003.
[14]
S. Khurshid, C. S. Pǎsǎreanu, and W. Visser. Generalized symbolic execution for model checking and testing. In H. Garavel and J. Hatcliff, editors, Tools and Algorithms for the Construction and Analysis of Systems, 9th International Conference, TACAS 2003, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2003, Warsaw, Poland, April 7-11, 2003, Proceedings, volume 2619 of Lecture Notes in Computer Science, pages 553--568. Springer, 2003.
[15]
M. Martel. An overview of semantics for the validation of numerical programs. In Cousot 4, pages 59--77.
[16]
Message Passing Interface Forum. MPI: A Message-Passing Interface standard, version 1.1. http://www.mpi-forum.org/docs/, 1995.
[17]
Message Passing Interface Forum. MPI-2: Extensions to the Message-Passing Interface. http://www.mpi-forum.org/docs/, 1997.
[18]
C. S. Pǎsǎreanu and W. Visser. Verification of Java programs using symbolic execution and invariant generation. In Graf and Mounier 7, pages 164--181.
[19]
Robby, M. B. Dwyer, and J. Hatcliff. Bogor: an extensible and highly-modular software model checking framework. In ESEC/FSE-11: Proceedings of the 9th European Software Engineering Conference held jointly with the 11th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 267--276, Helsinki, Finland, 2003. ACM Press.
[20]
S. F. Siegel. Efficient verification of halting properties for MPI programs with wildcard receives. In Cousot 4, pages 413--429.
[21]
S. F. Siegel and G. S. Avrunin. Verification of MPI-based software for scientific computation. In Graf and Mounier 7, pages 286--303.
[22]
S. F. Siegel and G. S. Avrunin. Modeling wildcard-free MPI programs for verification. In Proceedings of the 2005 ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming: PPoPP'05, June 15-17, 2005, Chicago, Illinois, USA, pages 95--106. ACM Press, 2005.
[23]
S. F. Siegel, A. Mironova, G. S. Avrunin, and L. A. Clarke. Using model checking with symbolic execution to verify parallel numerical programs. Technical Report UM-CS-2005-15, Department of Computer Science, University of Massachusetts, 2005.

Cited By

View all
  • (2023)Combining rule- and SMT-based reasoning for verifying floating-point Java programs in KeYInternational Journal on Software Tools for Technology Transfer10.1007/s10009-022-00691-x25:2(185-204)Online publication date: 8-Mar-2023
  • (2021)PEQCHECK: Localized and Context-aware Checking of Functional Equivalence2021 IEEE/ACM 9th International Conference on Formal Methods in Software Engineering (FormaliSE)10.1109/FormaliSE52586.2021.00019(130-140)Online publication date: May-2021
  • (2021)Verification of Functional Correctness of Code Diversification TechniquesNASA Formal Methods10.1007/978-3-030-76384-8_11(160-179)Online publication date: 19-May-2021
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ISSTA '06: Proceedings of the 2006 international symposium on Software testing and analysis
July 2006
274 pages
ISBN:1595932631
DOI:10.1145/1146238
  • General Chair:
  • Lori Pollock,
  • Program Chair:
  • Mauro Pezzè
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 21 July 2006

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. MPI
  2. concurrency
  3. finite state verification
  4. floating-point
  5. high performance computing
  6. message passing interface
  7. model checking
  8. numerical program
  9. parallel programming
  10. spin
  11. symbolic execution

Qualifiers

  • Article

Conference

ISSTA06
Sponsor:

Acceptance Rates

Overall Acceptance Rate 58 of 213 submissions, 27%

Upcoming Conference

ISSTA '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)3
  • Downloads (Last 6 weeks)1
Reflects downloads up to 20 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2023)Combining rule- and SMT-based reasoning for verifying floating-point Java programs in KeYInternational Journal on Software Tools for Technology Transfer10.1007/s10009-022-00691-x25:2(185-204)Online publication date: 8-Mar-2023
  • (2021)PEQCHECK: Localized and Context-aware Checking of Functional Equivalence2021 IEEE/ACM 9th International Conference on Formal Methods in Software Engineering (FormaliSE)10.1109/FormaliSE52586.2021.00019(130-140)Online publication date: May-2021
  • (2021)Verification of Functional Correctness of Code Diversification TechniquesNASA Formal Methods10.1007/978-3-030-76384-8_11(160-179)Online publication date: 19-May-2021
  • (2021)Deductive Verification of Floating-Point Java Programs in KeYTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-030-72013-1_13(242-261)Online publication date: 23-Mar-2021
  • (2019)Verifying Parallel Code After Refactoring Using Equivalence CheckingInternational Journal of Parallel Programming10.1007/s10766-017-0548-447:1(59-73)Online publication date: 1-Feb-2019
  • (2018)The role of model checking in software engineeringFrontiers of Computer Science: Selected Publications from Chinese Universities10.1007/s11704-016-6192-012:4(642-668)Online publication date: 1-Aug-2018
  • (2016)Nequivack: Assessing Mutation Score Confidence2016 IEEE Ninth International Conference on Software Testing, Verification and Validation Workshops (ICSTW)10.1109/ICSTW.2016.29(152-161)Online publication date: Apr-2016
  • (2016)A systematic review of approaches for testing concurrent programsConcurrency and Computation: Practice & Experience10.1002/cpe.371128:5(1572-1611)Online publication date: 10-Apr-2016
  • (2015)The nearest replica can be farther than you thinkProceedings of the Sixth ACM Symposium on Cloud Computing10.1145/2806777.2806939(16-29)Online publication date: 27-Aug-2015
  • (2015)Calculation coverage testing in scientific applicationsProceedings of the 2015 International Symposium on Software Testing and Analysis10.1145/2771783.2771807(350-360)Online publication date: 13-Jul-2015
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media