[[Image(bsml_logo.png, 10%, nolink, left, margin-right=18)]] [[Image(univ-orleans.png, 10%, link=http://www.univ-orleans.fr/lifo/, right, margin=2)]] [[Image(lacl.png, 9%, link=https://www.lacl.fr/en/, right, margin=2)]] [[Image(nau.jpg, 13%, link=http://nau.edu/siccs, right, margin=2)]] = BSML: Bulk Synchronous Parallel ML = If parallel programming is to become as widespread as sequential programming, the languages supporting it should incorporate all the standard abstraction mechanisms including higher order functions, recursion, pattern matching, etc.. Yet for such languages to be practical scalable programming tools, abstraction should not come at the price of predictable performance. Unfortunately many parallel languages don't describe data placement so that performance is not predictable as a function of the source program. This is because data placement depends on the language implementation, not its semantics. On the contrary, the bulk synchronous parallel (BSP) computing paradigm demonstrates that programs explicitly written for a static number p of processors can have predictable execution costs on a wide variety of architectures. But the combination of BSP algorithms with high-level language features is not well understood so that the evolution of BSP languages is hindered. We are investigating this question from a functional programming perspective. We have obtained extensions of the lambda-calculus with BSP operations (BSlambda) basis for the design of a functional bulk synchronous parallel language (Bulk Synchronous Parallel ML or BSML). A library for the [http://caml.inria.fr OCaml] language, called BSML, has been designed. It implements all our flat BSP operations. Many extensions have been added to this core calculus. We investigated in the [http://frederic.loulergue.eu/www_Caraml Caraml] project the use of variants of the BSML library for meta-computing. In the [http://frederic.loulergue.eu/PROPAC Propac] project we improved the safety of parallel programming based on BSML. In the [http://traclifo.univ-orleans.fr/PaPDAS PaPDAS] project we use BSML to implement a verified prototype of algorithmic skeleton library. == Software == === The BSML Library === * '''Try BSML [http://tesson.julien.free.fr/teaching/bsml/toplevel/ Online]'''! * Beta version : BSML [http://frederic.loulergue.eu/ftp/bsml-0.5.4pre.tar.gz 0.5.4pre] * Current version : BSML [http://frederic.loulergue.eu/research/bsmllib/bsml-0.5.html v0.5] ([http://traclifo.univ-orleans.fr/BSML/raw-attachment/wiki/WikiStart/bsml-0.5.tar.gz bsml-0.5.tar.gz], [http://traclifo.univ-orleans.fr/BSML/raw-attachment/wiki/WikiStart/bsml-0.5_manual.pdf bsml-0.5_manual.pdf]) * Old versions : [http://frederic.loulergue.eu/research/bsmllib/bsml-0.4.html v0.4] [http://frederic.loulergue.eu/research/bsmllib/bsmllib-0.26.html v0.26], [http://frederic.loulergue.eu/research/bsmllib/bsmllib-0.25.html v0.25], [http://frederic.loulergue.eu/research/bsmllib/bsmllib-0.2.html v0.2], [http://frederic.loulergue.eu/research/bsmllib/bsmllib-0.1.html v0.1] === Libraries for BSML === * A BSPlib-like API for BSML [http://frederic.loulergue.eu/ftp/bsml_bsplib_api-0.1.tar.gz bsml_bsplib_api-0.1.tar.gz] === Related Software === * MultiML: [wiki:MultiML] * Departmental Metacomputing ML: [wiki:DMML] * Minimally Synchronous Parallel ML: [wiki:MSPML] === Semantics and Verification === * Certified BSML programs with Coq: [http://traclifo.univ-orleans.fr/BSML/raw-attachment/wiki/WikiStart/certified_bsml-0.1.tar.gz v0.1], [http://traclifo.univ-orleans.fr/BSML/raw-attachment/wiki/WikiStart/CertifiedBSML-0.2.tar.gz v0.2] * Formal Semantics of Revised BSML in Coq [http://frederic.loulergue.eu/ftp/revised_bsml_semantics-0.1alpha.tar.gz v0.1alpha] * Related project: Systematic Development of Parallel Programs ([http://traclifo.univ-orleans.fr/SDPP SDPP]) == Team Members == * Frédéric Loulergue (SICCS, Northern Arizona University, USA) * Wadoud Bousdira (LIFO, University of Orléans, France) * Julien Tesson (LACL, University Paris East Créteil, France) Past members: Gaétan Hains, Olivier Ballereau, Armelle Merlin, David Billiet, Dimitri Louis-Régis, Radia Benheddi, Céline Ansault, Ilias Garnier, Louis Gesbert, Guillaume Petiot, Frédéric Gava Logo design: [http://clotilde-touze.blogspot.com/ Clotilde Touze] == Publications == === 2017 === * Frédéric Loulergue. [http://dx.doi.org/10.12694/scpe.v18i3.1306 A BSPlib-style API for Bulk Synchronous Parallel ML]. Scalable Computing: Practice and Experience, 18:261--274, 2017 * Frédéric Loulergue. [https://doi.org/10.1109/CANDAR.2017.108 A verified accumulate algorithmic skeleton]. In Fifth International Symposium on Computing and Networking (CANDAR), pages 420--426, Aomori, Japan, November 19-22, IEEE, 2017 * Frédéric Loulergue. [https://doi.org/10.1109/PDCAT.2017.00079 Implementing Algorithmic Skeletons with Bulk Synchronous Parallel ML]. In Parallel and Distributed Computing, Applications and Technologies (PDCAT), pages 461--468, IEEE, 2017 * Frédéric Loulergue. [https://doi.org/10.1016/j.procs.2017.05.267 Imperative BSPlib-style Communications in Bulk Synchronous Parallel ML]. In International Conference on Computational Science (ICCS), Procedia Computer Science, Zurich, Switzerland, Elsevier, 2017 * Loulergue Frédéric, Wadoud Bousdira, and Julien Tesson. [http://dx.doi.org/10.1007/s10766-016-0415-8 Calculating Parallel Programs in Coq using List Homomorphisms]. In ''International Journal of Parallel Programming'', volume 45, issue 2, pp. 300-319, 2017 === 2015 === * Loulergue Frédéric, Wadoud Bousdira, and Julien Tesson. Calcul de programmes parallèles avec Coq. In Nicolas Ollinger, editor, École des Jeunes Chercheurs en Informatique Mathématique, collection Alpha. CNRS Éditions, 2015 === 2014 === * Kento Emoto, Frédéric Loulergue, and Julien Tesson. [http://dx.doi.org/10.1007/978-3-319-08970-6_17 A Verified Generate-Test-Aggregate Coq Library for Parallel Programs Extraction]. In ITP, LNCS. Springer, 2014. * Frédéric Loulergue, Simon Robillard, Julien Tesson, Joeffrey Legaux, and Zhenjiang Hu. [http://dx.doi.org/10.1145/2554850.2554912 Formal Derivation and Extraction of a Parallel Program for the All Nearest Smaller Values Problem]. In ACM Symposium on Applied Computing (SAC), pages 1577-1584. ACM Press, 2014 * Frédéric Loulergue, Virginia Niculescu, and Julien Tesson. [http://dx.doi.org/10.1109/SYNASC.2014.51 Implementing powerlists with Bulk Synchronous Parallel ML]. In SYNASC. IEEE, 2014 === 2012 === * Wadoud Bousdira, Frédéric Loulergue, and Julien Tesson. [http://dx.doi.org/10.1007/978-3-642-33078-0_16 A Verified Library of Algorithmic Skeletons on Evenly Distributed Arrays]. In ICA3PP 2012, pages 218-232, LNCS. Springer, 2012 === 2011 === * Julien Tesson, Environnement pour le développement et la preuve de correction systématiques de programmes parallèles fonctionnels. PhD Thesis, LIFO, University of Orléans, November 2011 * Frédéric Gava, Louis Gesbert, and Frédéric Loulergue. [http://dx.doi.org/10.1145/2034751.2034759 Type System for a Safe Execution of Parallel Programs in BSML]. In 5th ACM SIGPLAN workshop on High-Level Parallel Programming and Applications. pages 27-34, ACM, 2011 * N. Javed, F. Loulergue, J. Tesson, and W. Bousdira. Prototyping a Library of Algorithmic Skeletons with Bulk Synchronous Parallel ML. In The 2011 International Conference on Parallel and Distributed Processing Techniques and Applications (PDPTA'11). pages 520-526, CSREA Press, 2011 * J. Tesson and F. Loulergue. [http://dx.doi.org/10.1016/j.procs.2011.04.005 A Verified Bulk Synchronous Parallel ML Heat Diffusion Simulation]. In 11th International Conference on Computational Science (ICCS 2011), Procedia Computer Science. pages 36-45, Elsevier, 2011 * W. Bousdira, L. Gesbert, and F. Loulergue. [http://studia.complexica.net/Art/AC-JFLA11-05.pdf Syntaxe et sémantique de Revised Bulk Synchronous Parallel ML]. In S. Conchon and A. Mahboubi, editors, Journées Francophones des Langages Applicatifs (JFLA). INRIA, 2011 * F. Gava, S. Tan. [http://studia.complexica.net/Art/AC-JFLA11-02.pdf Implémentation et prédiction des performances de squelettes data-parallèles en utilisant un langage BSP de haut niveau]. In S. Conchon and A. Mahboubi, editors, Journées Francophones des Langages Applicatifs (JFLA). INRIA, 2011 === 2010 === * L. Gesbert, F. Gava, F. Loulergue, and F. Dabrowski. [http://dx.doi.org/10.1016/j.future.2009.05.021 Bulk Synchronous Parallel ML with Exceptions]. Future Generation Computer Systems, 26:486-490, 2010 * I. Garnier and F. Gava. CPS Implementation of a BSP Composition Primitive with Application to the Implementation of Algorithmic Skeletons. Parallel, Emergent and Distributed Systems, 2010 * W. Bousdira, F. Gava, L. Gesbert, F. Loulergue, and G. Petiot. [http://doi.ieeecomputersociety.org/10.1109/IC-NC.2010.57 Functional Parallel Programming with Revised Bulk Synchronous Parallel ML]. In Koji Nakano, editor, 2nd International Workshop on Parallel and Distributed Algorithms and Applications (PDAA). IEEE Computer Society, 2010. * Wadoud Bousdira, Frédéric Loulergue, Louis Gesbert, [http://www.univ-orleans.fr/lifo/prodsci/rapports/RR/RR2010/RR-2010-12.pdf Syntaxe et sémantique de Revised Bulk Synchronous Parallel ML], Research Report 2010-12, LIFO, University of Orléans, 2010 === 2009 === * L. Gesbert. [http://tel.archives-ouvertes.fr/docs/00/48/13/76/PDF/2009PEST0004_0_1.pdf Développement systématique et sûreté d'exécution en programmation parallèle structurée]. PhD thesis, University Paris Est, LACL, 2009 * F. Gava and I. Garnier. [http://dx.doi.org/10.1109/IPDPS.2009.5160876 New Implementation of a BSP Composition Primitive with Application to the Implementation of Algorithmic Skeletons]. In Workshop APDCM part of IPDPS 2009. IEEE Press, 2009 === 2008 === * F. Gava. [http://dx.doi.org/10.1142/S0129626408003211 A Modular Implementation of Parallel Data Structures in BSML]. Parallel Processing Letters, 18(1):39-53, 2008 * F. Gava. [http://dx.doi.org/10.1007/978-3-540-69384-0_43 BSP Functional Programming; Examples of a cost based methodology]. In M. Bubak, G. D. van Albada, J. Dongarra, and P. M. A. Sloot, editors, The International Conference on Computational Science (ICCS), Part I, volume 5101 of LNCS, pages 375-385. Springer-Verlag, 2008 === 2007 === * L. Gesbert and F. Loulergue. [http://dx.doi.org/10.1109/PDCAT.2007.77 Semantics of an Exception Mechanism for Bulk Synchronous Parallel ML]. In International Conference on Parallel and Distributed Computing, Applications and Technologies (PDCAT), pages 201-208. IEEE Computer Society, 2007 * F. Gava. [http://dx.doi.org/10.1007/978-3-540-72584-8_81 Implementation of the Parallel Superposition in Bulk-Synchronous Parallel ML]. In Y. Shi, G.D.v. Albada, J. Dongarra, and P.M.A. Sloot, editors, The International Conference on Computational Science (ICCS), Part I, volume 4487 of LNCS, pages 611-619. Springer-Verlag, 2007 === 2006 === * L. Gesbert, F. Gava, F. Loulergue, and F. Dabrowski. [http://dx.doi.org/10.1007/978-0-387-69858-8_4 Bulk Synchronous Parallel ML with Exceptions]. In Peter Kacsuk, Thomas Fahringer, and Zsolt Nemeth, editors, Distributed and Parallel Systems (DAPSYS 2006), pages 33-42. Springer, 2006 * L. Gesbert, F. Gava, F. Loulergue, and F. Dabrowski. Bulk Synchronous Parallel ML avec exceptions. In Rencontres Francophones du Parallélisme (Renpar'17), 2006 * F. Loulergue, R. Benheddi, F. Gava, and D. Louis-Regis. [http://dx.doi.org/10.1007/11753728_48 Bulk Synchronous Parallel ML: Semantics and Implementation of the Parallel Juxtaposition]. In International Computer Science Symposium in Russia (CSR 2006), volume 3967 of LNCS, pages 475-486. Springer, 2006 * F. Loulergue. [http://dx.doi.org/10.1109/IPDPS.2006.1639552 A Calculus of Functional BSP Programs with Projection]. In International Parallel & Distributed Processing Symposium, 8th Workshop on Advances in Parallel and Distributed Computational Models. IEEE Computer Society Press, 2006 * F. Gava. Une implantation de la juxtaposition parallèle. In P.-E. Moreau and T. Hardin, editors, Journées Francophones des Langages Applicatifs (JFLA). INRIA, 2006. === 2005 === * F. Gava and F. Loulergue. [http://dx.doi.org/10.1016/j.future.2004.05.006 A Static Analysis for Bulk Synchronous Parallel ML to Avoid Parallel Nesting]. Future Generation Computer Systems, 21(5):665-671, 2005 * F. Gava. [http://www.scpe.org/vols/vol06/no4/SCPE_6_4_04.pdf External Memory in Bulk Synchronous Parallel ML]. Scalable Computing: Practice and Experience, 6(4):43-70, December 2005 * F. Gava. [http://tel.archives-ouvertes.fr/docs/00/11/08/31/PDF/gava-these.pdf Approches fonctionnelles de la programmation paralléle et des méta-ordinateurs. Sémantiques, implantations et certification]. PhD thesis, University Paris Val-de-Marne, LACL, 2005 * F. Loulergue, F. Gava, and D. Billiet. [http://dx.doi.org/10.1007/11428848_132 Bulk Synchronous Parallel ML: Modular Implementation and Performance Prediction]. In Vaidy S. Sunderam, G. Dick van Albada, Peter M. A. Sloot, and Jack Dongarra, editors, International Conference on Computational Science (ICCS), LNCS 3515, pages 1046-1054. Springer, 2005. * F. Gava. Implementation of Parallel Data Structures in BSML. In F. Loulergue and A. Tiskin, editors, Third International Workshop on High-Level Parallel Programming and Applications (HLPP 2005), pages 161-174, June 2005. === 2004 === * F. Loulergue. [http://dx.doi.org/10.1016/S0167-6423(99)00029-5 A Calculus of Functional BSP Programs with Explicit Substitution]. In G. Joubert, W. Nagel, F. Peters, and W. Walter, editors, Parallel Computing: Software Technology, Algorithms, Architectures and Applications, Proceedings, pages 127-134, Dresden, 2004. North Holland - Elsevier * F. Gava and F. Loulergue. Semantics of a Functional Bulk Synchronous Parallel Language with Imperative Features. In G. Joubert, W. Nagel, F. Peters, and W. Walter, editors, Parallel Computing: Software Technology, Algorithms, Architectures and Applications, Proceedings, pages 95-102, Dresden, 2004. North Holland - Elsevier * F. Gava. Parallel I/O in Bulk Synchronous Parallel ML. In M. Bubak, D. van Albada, P. Sloot, and J. Dongarra, editors, The International Conference on Computational Science (ICCS 2004), Part III, LNCS, pages 339-346. Springer Verlag, 2004 * F. Gava. Une bibliothèque certifiée de programmes fonctionnels BSP. In Ménissier-Morain, V., editor, Journées Francophones des Langages Applicatif, JFLA, pages 55-68. INRIA, january 2004 === 2003 === * F. Gava. [http://dx.doi.org/10.1142/S0129626403001343 Formal Proofs of Functional BSP Programs]. Parallel Processing Letters, 13(3):365-376, 2003 * F. Gava, F. Loulergue, and F. Dabrowski. A Parallel Categorical Abstract Machine for Bulk Synchronous Parallel ML. In W. Dosch and R. Y. Lee, editors, 4th International Conference on Software Engineering, Artificial Intelligence, Networking, and Parallel Distributed Computing (SNPD'03), pages 293-300. ACIS, 2003. * F. Dabrowski, F. Loulergue, and F. Gava. Pattern Matching of Parallel Values in Bulk Synchronous Parallel ML. In W. Dosch and R. Y. Lee, editors, 4th International Conference on Software Engineering, Artificial Intelligence, Networking, and Parallel Distributed Computing (SNPD'03), pages 301-308. ACIS, 2003. * F. Loulergue. [http://springerlink.metapress.com/content/x1lxbdh01wcbh2jf Parallel Juxtaposition for Bulk Synchronous Parallel ML]. In H. Kosch, L. Boszorményi, and H. Hellwagner, editors, Euro-Par 2003, number 2790 in LNCS, pages 781-788. Springer Verlag, 2003. * F. Gava and F. Loulergue. [http://springerlink.metapress.com/content/1uqnup0mx9d82ap6 A Polymorphic Type System for Bulk Synchronous Parallel ML]. In V. Malyshkin, editor, Seventh International Conference on Parallel Computing Technologies (PaCT 2003), number 2763 in LNCS, pages 215-229. Springer Verlag, 2003. * F. Loulergue. [http://dx.doi.org/10.1007/3-540-44863-2_23 Parallel Superposition for Bulk Synchronous Parallel ML]. In Peter M. A. Sloot and al., editors, International Conference on Computational Science (ICCS 2003), LNCS 2659, pages 223-232. Springer Verlag, 2003. * F. Gava and F. Loulergue. [http://dx.doi.org/10.1007/3-540-44860-8_16 A Parallel Virtual Machine for Bulk Synchronous Parallel ML]. In Peter M. A. Sloot and al., editors, International Conference on Computational Science (ICCS 2003), Part I, number 2657 in LNCS, pages 155-164. Springer Verlag, june 2003. * F. Gava and F. Loulergue. Synthèse de types pour Bulk Synchronous Parallel ML. In J.C. Filliatre, editor, Journées Francophones des Langages Applicatifs (JFLA 2003), pages 153-168, january 2003. === 2002 === * G. Hains and F. Loulergue. Functional Bulk Synchronous Parallel Programming using the BSMLlib Library. In S. Gorlatch and C. Lengauer, editors, Constructive Methods for Parallel Programming, Advances in Computation: Theory and Practice, pages 165-178. Nova Science Publishers, august 2002 * F. Loulergue. Implementation of a Functional Bulk Synchronous Parallel Programming Library. In 14th IASTED International Conference on Parallel and Distributed Computing Systems, pages 452-457. ACTA Press, 2002 === 2001 === * F. Loulergue. [http://dx.doi.org/10.1142/S0129626401000701 Distributed Evaluation of Functional BSP Programs]. Parallel Processing Letters, (4):423-437, 2001. * A. Merlin, G. Hains, and F. Loulergue. A SPMD Environment Machine for Functional BSP Programs. In Proceedings of the Third Scottish Functional Programming Workshop, august 2001. * F. Loulergue. Parallel Composition and Bulk Synchronous Parallel Functional Programming. In S. Gilmore, editor, Trends in Functional Programming, Volume 2, pages 77-88. Intellect Books, 2001. === 2000 === * F. Loulergue, G. Hains, and C. Foisy. [http://dx.doi.org/10.1016/S0167-6423(99)00029-5 A Calculus of Functional BSP Programs]. Science of Computer Programming, 37(1-3):253-277, 2000 * F. Loulergue. BSλp: [http://www.springerlink.com/content/y2q6dmwjhfayg545/ Functional BSP Programs on Enumerated Vectors]. In J. Kazuki, editor, International Symposium on High Performance Computing, number 1940 in Lecture Notes in Computer Science, pages 355-363. Springer, October 2000 * O. Ballereau, F. Loulergue, and G. Hains. High-level BSP Programming: BSML and BSλ. In G. Michaelson and Ph. Trinder, editors, Trends in Functional Programming, pages 29-38. Intellect Books, 2000. * G. Hains and F. Loulergue. Functional Bulk Synchronous Parallel Programming using the BSMLlib Library. In S. Gorlatch, editor, Second International Workshop on Constructive Methods for Parallel Programming (CMPP'2000), Research Report MIP-2000-07, June 2000 * F. Loulergue. Parallel Composition and Bulk Synchronous Parallel Functional Programming. In Stephen Gilmore, editor, Proceedings of the second Scottish Functional Programming Workshop, St Andrews, July 2000 === 1999 === * O. Ballereau, F. Loulergue, and G. Hains. High-level BSP Programming: BSML and BSλ. In P Trinder and G. Michaelson, editors, Proceedings of the first Scottish Functional Programming Workshop, number Techinal Report RM-99-9, pages 43-52, Edinburgh, august 1999. Heriot-Watt University. * F. Loulergue. Extension du BSλ-calcul. In P. Weis, editor, JFLA'99 : Journées Francophones des Langages Applicatifs, pages 93-112, Morzine-Avoriaz, February 1999 === 1998 === * F. Loulergue. BSML : Programmation BSP purement fonctionnelle. In D. Méry and G.-R. Perrin, editors, Dixièmes Rencontres Francophones du Parallélisme (Renpar'10), pages 243-246, Strasbourg, june 1998