bsml-lang.github.io

BSML Logo

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 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 Caraml project the use of variants of the BSML library for meta-computing. In the Propac project we improved the safety of parallel programming based on BSML. In the PaPDAS project we use BSML to implement a verified prototype of algorithmic skeleton library.

Software

The BSML Library

Libraries for BSML

Semantics and Verification

Team Members

Logo design: Clotilde Touze

Publications

2017

2015

2014

2012

2011

2010

2009

2008

2007

2006

2005

2004

2003

2002

2001

2000

1999

1998