Transforming powerlist-based divide-and-conquer programs for an improved execution model

Powerlists are data structures that can be successfully used for defining parallel programs based on divide-and-conquer paradigm. These parallel recursive data structures and their algebraic theories offer both a methodology to design parallel algorithms and parallel programming abstractions to ease the development of parallel applications. The paper presents a technique for speeding up the parallel recursive programs defined based on powerlists. The improvements are achieved by applying transformation rules that introduce tuple functions and prefix operators, for which a more efficient execution model is defined. Together with the execution model, a cost model is also defined in order to allow a proper evaluation. The treated examples emphasise the fact that the transformation leads to important improvements of the programs. The speeding up is achieved by reducing the number of recursive calls, and also by enable the fusion of splitting/combining operations on different data structures. In addition, enhancing the function that has to be computed to other useful functions using a tuple, could improved the cost reduction even more.

[1]  Wei-Ngan Chin Safe fusion of functional expressions , 1992, LFP '92.

[2]  Srinivas Nedunuri The functional approach to programming , 2000, SOEN.

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

[4]  Frédéric Loulergue,et al.  Implementing Powerlists with Bulk Synchronous Parallel ML , 2014, 2014 16th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing.

[5]  Sergei Gorlatch,et al.  SAT: A Programming Methodology with Skeletons and Collective Operations , 2003, Patterns and Skeletons for Parallel and Distributed Computing.

[6]  Richard S. Bird,et al.  An introduction to the theory of lists , 1987 .

[7]  J. Tukey,et al.  An algorithm for the machine calculation of complex Fourier series , 1965 .

[8]  Jayadev Misra,et al.  Data structures for parallel recursion , 1997 .

[9]  Leslie G. Valiant,et al.  A bridging model for parallel computation , 1990, CACM.

[10]  Wolfram Schulte,et al.  Architecture Independent Massive Parallelization of Divide-and-Conquer Algorithms , 1995, MPC.

[11]  Virginia NICULESCU PARES – A Model for Parallel Recursive Programs , 2012 .

[12]  Masato Takeichi,et al.  Construction of List Homomorphisms by Tupling and Fusion , 1996, MFCS.

[13]  Frédéric Loulergue,et al.  A Java Framework for High Level Parallel Programming Using Powerlists , 2017, 2017 18th International Conference on Parallel and Distributed Computing, Applications and Technologies (PDCAT).

[14]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1990, Theor. Comput. Sci..

[15]  Pierre Castéran,et al.  Interactive Theorem Proving and Program Development , 2004, Texts in Theoretical Computer Science An EATCS Series.

[16]  Murray Cole,et al.  Algorithmic Skeletons: Structured Management of Parallel Computation , 1989 .

[17]  Jayadev Misra,et al.  Powerlist: a structure for parallel recursion , 1994, TOPL.

[18]  Frédéric Loulergue,et al.  Powerlists in Coq: Programming and Reasoning , 2013, 2013 First International Symposium on Computing and Networking.

[19]  Wei-Ngan Chin Towards an automated tupling strategy , 1993, PEPM '93.

[20]  Virginia Niculescu,et al.  Data-Distributions in PowerList Theory , 2007, ICTAC.

[21]  Manfred Broy,et al.  Logic of Programming and Calculi of Discrete Design , 1987, NATO ASI Series.