A Verified Library of Algorithmic Skeletons on Evenly Distributed Arrays

  • Wadoud Bousdira
  • Frédéric Loulergue
  • Julien Tesson
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7439)


To make parallel programming as widespread as parallel architectures, more structured parallel programming paradigms are necessary. One of the possible approaches are algorithmic skeletons. They can be seen as higher order functions implemented in parallel. Algorithmic skeletons offer a simple interface to the programmer without all the details of parallel implementations as they abstract the communications and the synchronisations of parallel activities. To write a parallel program, users have to combine and compose the skeletons.

Orléans Skeleton Library (OSL) is an efficient meta-programmed C++ library of algorithmic skeletons that manipulate distributed arrays. A prototype implementation of OSL exists as a library written with the function parallel language Bulk Synchronous Parallel ML (BSML). In this paper we are interested in verifying the correctness of a subset of this prototype implementation. To do so, we give a functional specification of a subset of OSL and we prove the correctness of the BSML implementation with respect to this functional specification, using the Coq proof assistant. To illustrate how the user could use these skeletons, we prove the correctness of two applications implemented with them.


Parallel programming algorithmic skeletons program specification program verification proof assistant 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Aldinucci, M., Danelutto, M.: Skeleton-based parallel programming: Functional and parallel semantics in a single shot. Computer Languages, Systems and Structures 33(3-4), 179–192 (2007)zbMATHCrossRefGoogle Scholar
  2. 2.
    Bentley, J.: Programming Pearls. Addison-Wesley (1986)Google Scholar
  3. 3.
    Caromel, D., Henrio, L., Leyton, M.: Type safe algorithmic skeletons. In: EuroMicro PDP, pp. 45–53. IEEE Computer Society (2008)Google Scholar
  4. 4.
    Cavarra, A., Riccobene, E., Zavanella, A.: A formal model for the parallel semantics of P3L. In: ACM Symposium on Applied Computing, pp. 804–812. ACM (2000)Google Scholar
  5. 5.
    Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press (1989),
  6. 6.
    Cole, M.: Parallel Programming, List Homomorphisms and the Maximum Segment Sum Problem. In: Joubert, G.R., Trystram, D., Peters, F.J., Evans, D.J. (eds.) ParCo 1993, pp. 489–492. Elsevier (1994)Google Scholar
  7. 7.
    Di Cosmo, R., Pelagatti, S., Li, Z.: A calculus for parallel computations over multidimensional dense arrays. Computer Language Structures and Systems 33(3-4), 82–110 (2007)zbMATHCrossRefGoogle Scholar
  8. 8.
    Falcou, J., Sérot, J.: Formal Semantics Applied to the Implementation of a Skeleton-Based Parallel Programming Library. In: Bischof, C.H., Bücker, H.M., Gibbon, P., Joubert, G.R., Lippert, T., Mohr, B., Peters, F.J. (eds.) ParCo 2007, pp. 243–252. IOS Press (2007)Google Scholar
  9. 9.
    Gesbert, L., Hu, Z., Loulergue, F., Matsuzaki, K., Tesson, J.: Systematic Development of Correct BSP Programs. In: PDCAT, pp. 334–340. IEEE (2010)Google Scholar
  10. 10.
    González-Vélez, H., Leyton, M.: A survey of algorithmic skeleton frameworks: high-level structured parallel programming enablers. Software, Practrice & Experience 40(12), 1135–1160 (2010)CrossRefGoogle Scholar
  11. 11.
    Gorlatch, S.: Send-receive considered harmful: Myths and realities of message passing. ACM TOPLAS 26(1), 47–56 (2004)CrossRefGoogle Scholar
  12. 12.
    Hidalgo-Herrero, M., Ortega-Mallén, Y.: An Operational Semantics for the Parallel Language Eden. Parallel Processing Letters 12(2), 211–228 (2002)CrossRefGoogle Scholar
  13. 13.
    Hutton, G.: Programming in Haskell. Cambridge University Press (2007)Google Scholar
  14. 14.
    Javed, N., Loulergue, F.: A Formal Programming Model of Orléans Skeleton Library. In: Malyshkin, V. (ed.) PaCT 2011. LNCS, vol. 6873, pp. 40–52. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  15. 15.
    Javed, N., Loulergue, F.: Parallel Programming and Performance Predictability with Orléans Skeleton Library. In: HPCS, pp. 257–263. IEEE (2011)Google Scholar
  16. 16.
    Javed, N., Loulergue, F., Tesson, J., Bousdira, W.: Prototyping a Library of Algorithmic Skeletons with BSML. In: PDPTA 2011, pp. 520–526. CSREA Press (2011)Google Scholar
  17. 17.
    Leroy, X., Doligez, D., Frisch, A., Garrigue, J., Rémy, D., Vouillon, J.: The OCaml System release 3.12 (2010),
  18. 18.
    Letouzey, P.: Extraction in Coq: An Overview. In: Beckmann, A., Dimitracopoulos, C., Löwe, B. (eds.) CiE 2008. LNCS, vol. 5028, pp. 359–369. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  19. 19.
    Loogen, R., Ortega-Mallen, Y., Pena-Mari, R.: Parallel functional programming in eden. Journal of Functional Programming 3(15), 431–475 (2005)CrossRefGoogle Scholar
  20. 20.
    Loulergue, F., Gava, F., Billiet, D.: Bulk Synchronous Parallel ML: Modular Implementation and Performance Prediction. In: Sunderam, V.S., van Albada, G.D., Sloot, P.M.A., Dongarra, J. (eds.) ICCS 2005. LNCS, vol. 3515, pp. 1046–1054. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  21. 21.
    Loulergue, F., Tesson, J., Bousdira, W.: Certified BSML and Verified OSL Prototype version 0.3 (April 2012),
  22. 22.
    Matsuzaki, K., Iwasaki, H., Emoto, K., Hu, Z.: A Library of Constructive Skeletons for Sequential Style of Parallel Programming. In: InfoScale 2006. ACM Press (2006)Google Scholar
  23. 23.
    Tesson, J., Loulergue, F.: A Verified BSML Heat Diffusion Simulation. In: ICCS. Procedia Computer Science, pp. 36–45. Elsevier (2011)Google Scholar
  24. 24.
    The Coq Development Team: The Coq Proof Assistant,
  25. 25.
    Valiant, L.G.: A bridging model for parallel computation. CACM 33(8), 103 (1990)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Wadoud Bousdira
    • 1
  • Frédéric Loulergue
    • 1
  • Julien Tesson
    • 2
  1. 1.LIFOUniversity of OrléansFrance
  2. 2.Kochi University of TechnologyJapan

Personalised recommendations