Tools and methods able to simplify the development process of parallel software, but also to assure a high level of performance and robustness, are necessary. Powerlists and their variants are data structures that can be successfully used in a simple, provably correct, functional description of parallel programs, which are divide-and-conquer in nature. The paper presents how programs defined based on powerlists could be implemented in the functional language OCaml plus calls to the parallel functional programming library Bulk Synchronous Parallel ML. BSML functions follow the BSP model requirements, and so its advantages are introduced in OCaml parallel code. In order to write powerlist programs in BSML we provide a datatype for powerlists and a set of skeletons (higher-order functions implemented in parallel) to manipulate them. Examples are given and concrete experiments for their executions are conducted.
Keywords-Parallel recursive structures; Functional parallel programming; Bulk synchronous parallelism
I. CONTEXT AND MOTIVATIONThe latest developments of the computation systems lead to an increase of the requirements in using parallel computation. Still, for many years, parallel computation has been considered difficult and error-prone. This imposes using tools and methodologies able to simplify the development process of parallel software, but also to assure a high level of performance and robustness.This calls for a strongly structured form of parallelism [1], [2], [3], which should not only be based on an abstraction or model that conceals much of the complexity of parallel computation, but also provide a systematic way of developing such parallelism from specifications for practically nontrivial examples. Since correctness is very important in this context, high-level algebraic theories are appropriate to be used as fundamentals. Among them at least two seem suitable for parallel programming: the theory of lists [4] and parallel recursive structures such as powerlists [5].Powerlists and their variants are data structures that can be successfully used in a simple, provably correct, functional description of parallel programs, which are divide and conquer in nature [5], [6]. For each data structure, theories based on algebras and structural induction principles have been specified, which make them well suited to formally define recursive, data-parallel algorithms. These theories can be considered together a base for a model of parallel computation with a very high level of abstraction [7].In order to be useful, a model of parallel computation must also address very carefully issues such as efficient implementation and costs evaluation. BSP model [2] is famous especially because it provides a very accurate cost analysis, and a rigorous development that could provide robustness. From these, the idea of using BSP development methodology in the process of implementing powerlists programs came natural.Powerlist programs are defined in a very high-level way. While their divide-and-conquer nature makes them suita...