Abstract
Message Passing Interface (MPI) is the current de-facto standard for developing applications in high-performance computing. MPI allows flexible implementations of message passing operations, which introduces non-deterministic synchronizations that challenge the correctness of MPI programs. We present in this paper a symbolic method for verifying the MPI programs with non-deterministic synchronizations. Insides the method, we propose a path-level modeling method that uses communicating sequential processes (CSP) to precisely encode the non-deterministic synchronizations of an execution path. Furthermore, for the execution paths without non-deterministic message receive operations, we propose an optimization method to reduce the complexity of the CSP models. We have implemented our technique on MPI-SV and evaluated it on 10 real-world MPI programs w.r.t. deadlock freedom. The experimental results demonstrate the effectiveness of our verification method.
This work is supported by National Key R&D Program of China (No. 2018YFB0204301) and NSFC Program (No. 61902409, 61632015, 61690203 and 61532007).
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
We allocate each group of \(\textsf {MPI}\_\textsf {Bcast}\) operations a unique synchronization event \(\textsf {Bcast}_k\).
- 2.
Integrat_mw is adopted from [6], in which a static schedule is employed.
- 3.
DTG\(^{*}\) is the version that replaces the wildcard receives by deterministic receives.
References
Böhm, S., Meca, O., Jančar, P.: State-space reduction of non-deterministically synchronizing systems applicable to deadlock detection in MPI. In: Fitzgerald, J., Heitmeyer, C., Gnesi, S., Philippou, A. (eds.) FM 2016. LNCS, vol. 9995, pp. 102–118. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-48989-6_7
Botbol, V., Chailloux, E., Le Gall, T.: Static analysis of communicating processes using symbolic transducers. In: Bouajjani, A., Monniaux, D. (eds.) VMCAI 2017. LNCS, vol. 10145, pp. 73–90. Springer, Cham (2017). https://doi.org/10.1007/978-3-319-52234-0_5
Brand, D., Zafiropulo, P.: On communicating finite-state machines. J. ACM 30, 323–342 (1983)
Cadar, C., Dunbar, D., Engler, D.: KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs. In: OSDI, pp. 209–224 (2008)
Clarke, E.M., Grumberg, O., Peled, D.: Model Checking. MIT Press, Cambridge (1999)
Forejt, V., Kroening, D., Narayanaswamy, G., Sharma, S.: Precise predictive analysis for discovering communication deadlocks in MPI programs. In: Jones, C., Pihlajasaari, P., Sun, J. (eds.) FM 2014. LNCS, vol. 8442, pp. 263–278. Springer, Cham (2014). https://doi.org/10.1007/978-3-319-06410-9_19
MPI Forum: MPI: a message-passing interface standard version 3.0 (2012). http://mpi-forum.org
Gopalakrishnan, G., et al.: Report of the HPC correctness summit, 25–26 January 2017, Washington, DC (2017). https://science.energy.gov/~/media/ascr/pdf/programdocuments/docs/2017/HPC_Correctness_Report.pdf
Holzmann, G.J.: Promela manual pages (2012). http://spinroot.com/spin/Man/promela.html
Huang, Yu., Mercer, E.: Detecting MPI zero buffer incompatibility by SMT encoding. In: Havelund, K., Holzmann, G., Joshi, R. (eds.) NFM 2015. LNCS, vol. 9058, pp. 219–233. Springer, Cham (2015). https://doi.org/10.1007/978-3-319-17524-9_16
Khanna, D., Sharma, S., Rodríguez, C., Purandare, R.: Dynamic symbolic verification of MPI programs. In: Havelund, K., Peleska, J., Roscoe, B., de Vink, E. (eds.) FM 2018. LNCS, vol. 10951, pp. 466–484. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-95582-7_28
King, J.: Symbolic execution and program testing. Commun. ACM 19, 385–394 (1976)
López, H.A., et al.: Protocol-based verification of message-passing parallel programs. In: OOPSLA, pp. 280–298 (2015)
Luo, Z., Zheng, M., Siegel, S.F.: Verification of MPI programs using CIVL. In: EuroMPI, pp. 6:1–6:11 (2017)
Manna, Z., Pnueli, A.: The Temporal Logic of Reactive and Concurrent Systems - Specification. Springer, New York (1992). https://doi.org/10.1007/978-1-4612-0931-7
Rico-Gallego, J.-A., Díaz-Martín, J.-C.: Performance evaluation of thread-based MPI in shared memory. In: Cotronis, Y., Danalis, A., Nikolopoulos, D.S., Dongarra, J. (eds.) EuroMPI 2011. LNCS, vol. 6960, pp. 337–338. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-24449-0_42
Roscoe, B.: The Theory and Practice of Concurrency. Prentice-Hall, Upper Saddle River (2005)
Siegel, S.F.: Model checking nonblocking MPI programs. In: Cook, B., Podelski, A. (eds.) VMCAI 2007. LNCS, vol. 4349, pp. 44–58. Springer, Heidelberg (2007). https://doi.org/10.1007/978-3-540-69738-1_3
Siegel, S.F.: Verifying parallel programs with MPI-Spin. In: Cappello, F., Herault, T., Dongarra, J. (eds.) EuroPVM/MPI 2007. LNCS, vol. 4757, pp. 13–14. Springer, Heidelberg (2007). https://doi.org/10.1007/978-3-540-75416-9_8
Siegel, S.F., Zirkel, T.K.: FEVS: a functional equivalence verification suite for high-performance scientific computing. Math. Comput. Sci. 5, 427–435 (2011)
Snir, M.: MPI-The Complete Reference: The MPI Core, vol. 1. MIT Press, Cambridge (1998)
Sun, J., Liu, Y., Dong, J.S., Pang, J.: PAT: towards flexible verification under fairness. In: Bouajjani, A., Maler, O. (eds.) CAV 2009. LNCS, vol. 5643, pp. 709–714. Springer, Heidelberg (2009). https://doi.org/10.1007/978-3-642-02658-4_59
Vakkalanka, S.: Efficient dynamic verification algorithms for MPI applications. Ph.D. thesis, The University of Utah (2010)
Vakkalanka, S., Gopalakrishnan, G., Kirby, R.M.: Dynamic verification of MPI programs with reductions in presence of split operations and relaxed orderings. In: Gupta, A., Malik, S. (eds.) CAV 2008. LNCS, vol. 5123, pp. 66–79. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-70545-1_9
Vo, A., Aananthakrishnan, S., Gopalakrishnan, G., De Supinski, B.R., Schulz, M., Bronevetsky, G.: A scalable and distributed dynamic formal verifier for MPI programs. In: SC, pp. 1–10 (2010)
Xue, R., et al.: MPIWiz: subgroup reproducible replay of MPI applications. ACM SIGPLAN Not. 44, 251–260 (2009)
Yu, H., et al.: Symbolic verification of message passing interface programs. In: 42nd International Conference on Software Engineering, ICSE 2020, Seoul, South Korea, 27 June–19 July 2020, pp. 1248–1260 (2020)
Author information
Authors and Affiliations
Corresponding authors
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Yu, H., Chen, Z., Huang, C., Wang, J. (2020). Symbolic Verification of MPI Programs with Non-deterministic Synchronizations. In: Pang, J., Zhang, L. (eds) Dependable Software Engineering. Theories, Tools, and Applications. SETTA 2020. Lecture Notes in Computer Science(), vol 12153. Springer, Cham. https://doi.org/10.1007/978-3-030-62822-2_10
Download citation
DOI: https://doi.org/10.1007/978-3-030-62822-2_10
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-62821-5
Online ISBN: 978-3-030-62822-2
eBook Packages: Computer ScienceComputer Science (R0)