Abstract
We present bsp-why, a tool for deductive verification of bsp algorithms with subgroup synchronisation. From bsp programs, bsp-why generates sequential codes for the back-end condition generator why and thus benefits from its large range of existing provers. By enabling subgroups, the user can prove the correctness of programs that run on hierarchical machines—e.g. clusters of multi-cores. In general, bsp-why is able to generate proof obligations of mpi programs that only use collective operations. Our case studies are distributed state-space construction algorithms, the basis of model-checking.
Similar content being viewed by others
Notes
A parameter is a routine of the program for which we do not know the code; we only have its type and the effect on its arguments.
For drma operations, in case of a distributed architecture, the buffers have to be sent; in case of a shared-memory architecture, the library simulates this sending.
Doing this transformation automatically is perhaps possible in some specific cases; however, this is not the subject of this work.
References
Bisseling, R.H.: Parallel Scientific Computation. A Structured Approach Using BSP and MPI. Oxford University Press, Oxford (2004)
Bonorden, O., Judoiink, B., von Otte, I., Rieping, O.: The Paderborn University BSP (PUB) library. Parallel Comput. 29(2), 187–207 (2003)
Burnim, J., Sen, K.: Asserting and checking determinism for multithreaded programs. Commun. ACM 53(6), 97–105 (2010)
Cappello, F., Guermouche, A., Snir, M.: On communication determinism in HPC applications. In: Computer Communications and Networks (ICCCN), pp. 1–8. IEEE (2010)
Chen, Y., Sanders, W.: Top-down design of bulk-synchronous parallel programs. Parallel Process. Lett. 13(3), 389–400 (2003)
Clarke, E., et al. (eds.): Handbook of Model Checking. Springer, Berlin (2012)
Esparza, J., et al.: A fully verified executable LTL model checker. In: Computer Aided Verification (CAV), LNCS, vol. 8044, pp. 463–478. Springer (2013)
Filliâtre, J.C.: Verifying two lines of C with why3: an exercise in program verification. In: Verified Software: Theories, Tools and Experiments (VSTTE) (2012)
Fortin, J.: BSP-WHY: a tool for deductive verification of BSP programs; machine-checked semantics and application to distributed state-space algorithms. Ph.D. thesis, University of Paris-East (2013). http://lacl.fr/gava/papers/fortin_thesis
Fortin, J., Gava, F.: BSP-WHY: an intermediate language for deductive verification of BSP programs. In: HLPP, pp. 35–44. ACM (2010)
Furia, C.A., Meyer, B.: Inferring loop invariants using postconditions. In: Fields of Logic and Computation, LNCS, vol. 6300, pp. 277–300. Springer (2010)
Garavel, H., Mateescu, R., Smarandache, I.M.: Parallel state space construction for model-checking. In: SPIN Conference, LNCS, vol. 2057, pp. 217–234. Springer (2001)
Gava, F.: Formal proofs of functional BSP programs. Parallel Process. Lett. 13(3), 365–376 (2003)
Gava, F., Fortin, J.: Formal semantics of a subset of the PUB. In: Parallel and Distributed Computing, Applications and Technologies (PDCAT), pp. 269–276. IEEE (2008)
Gava, F., Fortin, J., Guedj, M.: Deductive verification of state-space algorithms. In: Integrated Formal Methods (IFM), LNCS, vol. 7940, pp. 124–138. Springer (2013)
Gopalakrishnan, G., Kirby, R.M., Siegel, S.F., Thakur, R., Gropp, W., Lusk, E.L., de Supinski, B.R., Schulz, M., Bronevetsky, G.: Formal analysis of MPI-based parallel programs: present and future. Commun. ACM 54(12), 82–91 (2011)
Herms, P.: Certification of a chain for deductive program verification. In: Bertot, Y. (ed.) COQ Workshop, Satellite of ITP (2010)
Hill, J.M.D., McColl, B., Stefanescu, D.C., Goudreau, M.W., Lang, K., Rao, S.B., Suel, T., Tsantilas, T., Bisseling, R.: BSPLIB: the BSP programming library. Parallel Comput. 24, 1947–1980 (1998)
Hoare, C.A.R., Misra, J., Leavens, G.T., Shankar, N.: The verified software initiative: a manifesto. ACM Comput. Surv. 41(4), 1–8 (2009)
Hobor, A., Gherghina, C.: Barriers in concurrent separation logic: now with tool support. Log. Methods Comput. Sci. 8(2), 1–32 (2012)
Jifeng, H., Miller, Q., Chen, L.: Algebraic laws for BSP programming. In: Bouge, L., Robert, Y. (eds.) Euro-Par, no. 1124 in LNCS, pp. 359–368. Springer (1996)
Lübeck, F., Neunhöffer, M.: Enumerating large orbits and direct condensation. Exp. Math. 10(2), 197–205 (2001)
Martino, B.D., Mazzeo, A., Mazzocca, M., Villano, U.: Parallel program analysis and restructuring by detection of point-to-point interaction patterns and their transformation into collective communication constructs. Sci. Comput. Program. 40(2–3), 235–263 (2001)
Merali, Z.: Computational science: error, why scientific programming does not compute. Nature 467(7317), 775–777 (2010)
Namjoshi, K.S.: Certifying model checkers. In: Berry, G., Comon, H., Finkel, A. (eds.) Computer Aided Verification (CAV), LNCS, vol. 2102, pp. 2–13. Springer, Berlin (2001)
Nieto, L.P.: Verification of parallel programs with the Owicki-Gries and rely-guarantee methods in Isabelle/HOL. Ph.D. thesis, Technische Universitat Munchen (2001)
Saad, R.T., Dal-Zilio, S., Berthomieu, B.: Mixed shared-distributed hash tables approaches for parallel state space construction. In: Parallel and Distributed Computing (ISPDC), pp. 9–16. IEEE (2011)
Seo, S., Yoon, E.J., Kim, J.H., Jin, S., Kim, J.S., Maeng, S.: HAMA: an efficient matrix computation with the mapreduce framework. In: Cloud Computing (CloudCom), pp. 721–726. IEEE (2010)
Shankar, N.: Trust and automation in verification tools. In: Cha, S.D., Choi, J.Y., Kim, M., Lee, I., Viswanathan, M. (eds.) Automated Technology for Verification and Analysis (ATVA), LNCS, vol. 5311, pp. 4–17. Springer, Berlin (2008)
Siegel, S.F., Zirkel, T.K.: Loop invariant symbolic execution for parallel programs. In: Kuncak, V., Rybalchenko, A. (eds.) Verification, Model Checking, and Abstract Interpretation (VMCAI), LNCS, vol. 7148, pp. 412–427. Springer, Berlin (2012)
Sprenger, C.: A verified model checker for the modal \(\mu \)-calculus in COQ. In: Tools and Algorithms for Construction and Analysis of Systems (TACAS), LNCS, vol. 1384, pp. 167–183. Springer (1998)
Springel, V.: The cosmological simulation code gadget-2. Mon. Not. R. Astron. Soc. 364, 1105–1134 (2005)
Stewart, A.: A programming model for BSP with partitioned synchronisation. Form. Asp. Comput. 23(4), 421–432 (2011)
Stewart, A., Clint, M., Gabarró, J.: Axiomatic frameworks for developing BSP-style programs. Parallel Algorithms Appl. 14, 271–292 (2000)
Turner, E., Butler, M., Leuschel, M.: A refinement-based correctness proof of symmetry reduced model-checking. In: Abstract State Machines, Alloy, B and Z, LNCS, pp. 231–244. Springer (2010)
Valiant, L.G.: A bridging model for parallel computation. Commun. ACM 33(8), 103–111 (1990)
Valiant, L.G.: A bridging model for multi-core computing. J. Comput. Syst. Sci. 77(1), 154–166 (2011)
Villard, J., Lozes, É., Calcagno, C.: Proving copyless message passing. In: Programming Languages and Systems (APLAS), LNCS, vol. 5904, pp. 194–209. Springer (2009)
Vo, A., Vakkalanka, S., DeLisi, M., Gopalakrishnan, G., Kirby, R.M., Thakur, R.: Formal verification of practical MPI programs. In: Principles and Practices of Parallel Programming (PPoPP), pp. 261–269 (2009)
Yzelman, A.N., Bisseling, R.H.: An object-oriented BSP library for multicore programming. Concurr. Comput. Pract. Exp. 24(5), 533–553 (2012)
Zhou, J., Chen, Y.: Generating C code from LOGS specifications. In: Theoretical Aspects of Computing (ICTAC), LNCS, vol. 3722, pp. 195–210. Springer (2005)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Fortin, J., Gava, F. BSP-Why: A Tool for Deductive Verification of BSP Algorithms with Subgroup Synchronisation. Int J Parallel Prog 44, 574–597 (2016). https://doi.org/10.1007/s10766-015-0360-y
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10766-015-0360-y