BSML/BSlambda

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 (BSML).

A library for the Objective Caml language, called BSMLlib, has been designed. It implements all our flat BSP operations. Parallel compositions has been proposed (juxtaposition, superposition). BSML with parallel juxtaposition is not a pure functional language. These operations are not yet implemented. We investigated in the Caraml project the use of variants of the BSMLlib for meta-computing.

In the Propac project we are improving the safety of parallel programming based on BSML. This project has three main research directions:

Please read the following papers for further information:

BSlambda BSML/BSMLlib
cmpp98
rr98-09
jfla99
rr99-10
scp99
thesis
ishpc2000
ppl2001
TR-2002-21
iccs2003a
parco2003a
LOU2006:APDCM
renpar10
sfp99
thesis
trends2000
cmpp2000
trends2001
sfp2001
actp2002
pdcs2002
TR-2002-20
jfla2003
iccs2003r

pact2003
europar2003
parco2003b
snpd2003gld
snpd2003dlg
GAV2003:PPL
GAV2004:JFLA
GAV2004:ICCSa
METR-2004-06
GL2004:FGCS
LGB2005:ICCS
LOU2005:SNPD
GL2005:PPL
GAV2005:HLPP
GAV2005:SCPE
GAV2006:JFLA
LBG2006:CSR
GGL2006:RENPAR
GGL2006:DAPSYS
GL2007:PDCAT