New syntax of a High-level BSP language

Bulk-Synchronous Parallel (BSP) ML is a high-level language for programming parallel algorithms. Built upon OCaml, it provides a safe setting for the implementation of BSP algorithms and avoiding concurrency related problems (deadlocks, indeterminism etc.). Currently, BSML is based on a very small core of parallel primitives that extended ML sequential programming to BSP one. But we found that currently the price was to read programs with hardness. We have thus choose to design a new syntax that makes programs easier to read and so to debug. This new syntax also gives us a smart and uniform syntax for parallel patterns and exceptions handlers in BSML. In this paper, we present the problem of the past syntax, the new one, matching of parallel values and exceptions. Implementations are also detailed and examples are given to show the useful of the work (and BSML). In final, some benchmarks complete this article.

[1]  Seung-Yeop Lee,et al.  Remote memory access: A case for portable, efficient and library independent parallel programming , 2004, Sci. Program..

[2]  Friedhelm Meyer auf der Heide,et al.  A Web Computing Environment for Parallel Algorithms in Java , 2001, Scalable Comput. Pract. Exp..

[3]  Olaf Bonorden,et al.  The Paderborn University BSP (PUB) library , 2003, Parallel Comput..

[4]  Frédéric Gava External Memory in Bulk-Synchronous Parallel ML , 2005, Scalable Comput. Pract. Exp..

[5]  Sergei Gorlatch,et al.  Send-receive considered harmful: Myths and realities of message passing , 2004, TOPL.

[6]  Jack Dongarra,et al.  MPI: The Complete Reference , 1996 .

[7]  Zheng Li,et al.  Skeletal Parallel Programming with OCamlP3l 2.0 , 2005, Parallel Process. Lett..

[8]  David B. Skillicorn,et al.  Questions and Answers about BSP , 1997, Sci. Program..

[9]  Rita Loogen,et al.  Under Consideration for Publication in J. Functional Programming Parallel Functional Programming in Eden , 2022 .

[10]  Konrad Hinsen,et al.  Parallel Scripting with Python , 2007, Computing in Science & Engineering.

[11]  Alexander Tiskin,et al.  A New Way to Divide and Conquer , 2001, Parallel Process. Lett..

[12]  Simon Peyton Jones,et al.  GpH: An Architecture-independent Functional Language , 1998 .

[13]  Mostafa Bamha,et al.  Pipelining a Skew-Insensitive Parallel Join Algorithm , 2003, Parallel Process. Lett..

[14]  Frédéric Loulergue,et al.  Bulk synchronous parallel ML with exceptions , 2006, Future Gener. Comput. Syst..

[15]  Alexandre Tiskin A NEW WAY TO DIVIDE AND CONQUER , 2001 .

[16]  B M Boghosian,et al.  Parallel Scientific Computation , 1993, Science.

[17]  Sebastian Burckhardt,et al.  The design of a task parallel library , 2009, OOPSLA.

[18]  Martin Alt,et al.  Using algorithmic skeletons for efficient grid computing with predictable performance , 2007 .

[19]  Rob H. Bisseling,et al.  Designing a BSP Version of ScaLAPACK , 1999, PPSC.

[20]  Joël Ouaknine,et al.  Sudoku as a SAT Problem , 2006, ISAIM.

[21]  Frédéric Loulergue Distributed Evaluation of Functional BSP Programs , 2001, Parallel Process. Lett..

[22]  Frédéric Loulergue,et al.  Parallel Superposition for Bulk Synchronous Parallel ML , 2003, International Conference on Computational Science.

[23]  Frédéric Gava,et al.  New implementation of a BSP composition primitive with application to the implementation of algorithmic skeletons , 2009, 2009 IEEE International Symposium on Parallel & Distributed Processing.

[24]  Jean-Louis Giavitto,et al.  Pattern-matching and rewriting rules for group indexed data structures , 2002, SIGP.

[25]  Frédéric Loulergue,et al.  Semantics of an Exception Mechanism for Bulk Synchronous Parallel ML , 2007, Eighth International Conference on Parallel and Distributed Computing, Applications and Technologies (PDCAT 2007).

[26]  Ami Marowka,et al.  Parallel Scientific Computation: A Structured Approach using BSP and MPI , 2006, Scalable Comput. Pract. Exp..

[27]  Louis Gesbert Développement systématique et sûreté d'exécution en programmation parallèle structurée. (Systematic development and safety of execution in structured parallel programming) , 2009 .

[28]  Frédéric Gava,et al.  Formal Proofs of Functional BSP Programs , 2003, Parallel Process. Lett..

[29]  Frédéric Loulergue,et al.  A static analysis for Bulk Synchronous Parallel ML to avoid parallel nesting , 2005, Future Gener. Comput. Syst..

[30]  Frédéric Loulergue DISTRIBUTED EVALUATION OF FUNCTIONAL BSP PROGRAMS , 2001 .

[31]  Frédéric Gava,et al.  Approches fonctionnelles de la programmation parallèle et des méta-ordinateurs. Sémantiques, implantations et certification. (Functional approaches of parallel programming and méta-computers. Semantics, implementations and certification) , 2005 .

[32]  Murray Cole,et al.  Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming , 2004, Parallel Comput..

[33]  Pierre-Etienne Moreau,et al.  Tom: Piggybacking Rewriting on Java , 2007, RTA.

[34]  Frédéric Gava,et al.  BSP Functional Programming: Examples of a Cost Based Methodology , 2008, ICCS.

[35]  Yves Bertot,et al.  Interactive Theorem Proving and Program Development: Coq'Art The Calculus of Inductive Constructions , 2010 .

[36]  Dimitris C. Dracopoulos,et al.  Speeding up genetic programming: a parallel BSP implementation , 1996 .

[37]  Frédéric Loulergue,et al.  Pattern Matching of Parallel Values in Bulk Synchronous Parallel ML , 2003, SNPD.

[38]  Alexander Tiskin,et al.  The design and analysis of bulk-synchronous parallel algorithms , 1998 .

[39]  David B. Skillicorn,et al.  Using the BSP cost model to optimise parallel neural network training , 1998, Future Gener. Comput. Syst..