Abstract
HPC practitioners make use of techniques, such as parallelism and sparse data structures, that are difficult to reason about and debug. Here we explore the role of data refinement, a correct-by-construction approach, in verifying HPC applications via bounded model checking. We show how single program, multiple data (SPMD) parallelism can be modeled in Alloy, a declarative specification language, and describe common issues that arise when performing scope-complete refinement checks in this context.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
It is well known that running unit tests is a poor way of unearthing conceptual flaws.
References
Alloy models from the paper. https://go.ncsu.edu/alloy/
Baugh, J., Altuntas, A.: Formal methods and finite element analysis of hurricane storm surge: a case study in software verification. Sci. Comput. Program. 158, 100–121 (2018)
Beckingsale, D.A., et al.: Raja: portable performance for large-scale scientific applications. In: 2019 IEEE/ACM International Workshop on Performance, Portability and Productivity in HPC (P3HPC), pp. 71–81 (2019)
Carter Edwards, H., Trott, C.R., Sunderland, D.: Kokkos: enabling manycore performance portability through polymorphic memory access patterns. J. Parallel Distrib. Comput. 74(12), 3202–3216 (2014)
Dyer, T., Altuntas, A., Baugh, J.: Bounded verification of sparse matrix computations. In: Proceedings of the Third International Workshop on Software Correctness for HPC Applications, Correctness 2019, pp. 36–43. IEEE/ACM (2019)
Emerson, E.A., Trefler, R.J., Wahl, T.: Reducing model checking of the few to the one. In: Liu, Z., He, J. (eds.) Formal Methods Softw. Eng., pp. 94–113. Springer, Berlin, Heidelberg (2006)
Gopalakrishnan, G., et al.: Report of the HPC Correctness Summit, 25–26 Jan 2017, Washington, DC. CoRR abs/1705.07478 (2017)
Hoare, C.A.R.: Proof of correctness of data representations. Acta Informatica 1(4), 271–281 (1972)
Jackson, D.: Software Abstractions: Logic, Language, and Analysis. The MIT Press (2012)
Lustig, D., Wright, A., Papakonstantinou, A., Giroux, O.: Automated synthesis of comprehensive memory model litmus test suites. In: Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems, pp. 661–675. ASPLOS 2017, ACM, New York, NY, USA (2017)
Martin, J.M.R.: Testing and verifying parallel programs using data refinement. In: Communicating Process Architectures 2017 & 2018, pp. 491–500. IOS Press (2019)
Milicevic, A., Jackson, D.: Preventing arithmetic overflows in Alloy. Sci. Comput. Program. 94, 203–216 (2014)
de Roever, W.P., Engelhardt, K., Buth, K.H.: Data refinement: model-oriented proof methods and their comparison. Cambridge University Press (1998)
Acknowledgments
This work was funded by NSF under the Formal Methods in the Field (FMitF) program, awards #2124205 (NCSU) and #2124100 (Utah).
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2023 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Benavides, J., Baugh, J., Gopalakrishnan, G. (2023). An HPC Practitioner’s Workbench for Formal Refinement Checking. In: Mendis, C., Rauchwerger, L. (eds) Languages and Compilers for Parallel Computing. LCPC 2022. Lecture Notes in Computer Science, vol 13829. Springer, Cham. https://doi.org/10.1007/978-3-031-31445-2_5
Download citation
DOI: https://doi.org/10.1007/978-3-031-31445-2_5
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-31444-5
Online ISBN: 978-3-031-31445-2
eBook Packages: Computer ScienceComputer Science (R0)