Bulk-synchronous parallel ML (BSML) is an ML-based language designed to code bulk synchronous parallel (BSP) algorithms. It allows an estimation of execution time, and avoids deadlocks and non-determinism. BSML proposes an extension of ML programing with a small set of primitives. One of these primitives, called parallel superposition, allows the parallel composition of two BSP programs. Nevertheless, its past implementation uses system threads and has a serious drawback, which is the cost of managing threads in ML-like languages. This work presents a new implementation of this primitive based on a continuation-passing-style transformation guided by a flow analysis. To test it and show its usefulness, we also have implemented the OCamlP3L's algorithmic skeletons and compared their efficiencies with the original ones. The work presented here is tightly related to the BSP model, but is not specific to ML. Hence, we reckon there would be little work involved in translating it to, for instance, Java or Python.
|Number of pages||23|
|Journal||International Journal of Parallel, Emergent and Distributed Systems|
|Publication status||Published - 30 Mar 2011|