Automatically deriving cost models for structured parallel processes using hylomorphisms

This work has been partially supported by the EU Horizon 2020 grant “RePhrase: Refactoring Parallel Heterogeneous Resource-Aware Applications - a Software Engineering Approach” (ICT-644235), by COST Action IC1202 (TACLe), supported by COST (European Cooperation on Science and Technology), and by EPSRC grant EP/M027317/1 “C33: Scalable & Verified Shared Memory via Consistency-directed Cache Coherence”.

[1]  Manuel Barbosa,et al.  Recursion patterns and time-analysis , 2005, SIGP.

[2]  Steven Fortune,et al.  Parallelism in random access machines , 1978, STOC.

[3]  Akimasa Morihata,et al.  Automatic inversion generates divide-and-conquer parallel programs , 2007, PLDI '07.

[4]  Amr Sabry,et al.  Proving the correctness of reactive systems using sized types , 1996, POPL '96.

[5]  Masato Takeichi,et al.  Formal derivation of efficient parallel programs by construction of list homomorphisms , 1997, TOPL.

[6]  Philip Wadler,et al.  Deforestation: Transforming Programs to Eliminate Trees , 1988, Theoretical Computer Science.

[7]  David Sands A Na Ve Time Analysis and Its Theory of Cost Equivalence {draft Submitted for Publication{ , 1995 .

[8]  Kevin Hammond,et al.  Farms, pipes, streams and reforestation: reasoning about structured parallel processes using types and hylomorphisms , 2016, ICFP.

[9]  Christopher Brown,et al.  Timing Properties and Correctness for Structured Parallel Programs on x86-64 Multicores , 2015, FOPARA.

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

[11]  John H. Reif,et al.  Synthesis of Parallel Algorithms , 1993 .

[12]  Sergei Gorlatch,et al.  Parallelizing functional programs by generalization , 1999 .

[13]  Clara Segura,et al.  Sized Types for Typing Eden Skeletons , 2001, IFL.

[14]  Hans-Wolfgang Loidl,et al.  A Sized Time System for a Parallel Functional Language , 1996 .

[15]  Pedro B. Vasconcelos Space cost analysis using sized types , 2008 .

[16]  Jan Gustafsson,et al.  Toward Static Timing Analysis of Parallel Software , 2012, WCET 2012.

[17]  Marco Danelutto,et al.  Rewriting skeleton programs: How to evaluate the data-parallel stream-parallel tradeoff , 1998 .

[18]  Guy E. Blelloch,et al.  NESL: A Nested Data-Parallel Language , 1992 .

[19]  Akimasa Morihata A short cut to parallelization theorems , 2013, ICFP.

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

[21]  Shin-Cheng Mu,et al.  Constructing List Homomorphisms from Proofs , 2011, APLAS.

[22]  Marco Danelutto,et al.  RPL: A Domain-Specific Language for Designing and Implementing Parallel C++ Applications , 2016, 2016 24th Euromicro International Conference on Parallel, Distributed, and Network-Based Processing (PDP).

[23]  Manuel M. T. Chakravarty,et al.  Flattening Trees , 1998, Euro-Par.

[24]  David B. Skillicorn,et al.  Models for practical parallel computation , 1991, International Journal of Parallel Programming.

[25]  Akimasa Morihata,et al.  Automatic Parallelization of Recursive Functions Using Quantifier Elimination , 2010, FLOPS.

[26]  Masato Takeichi,et al.  Towards automatic parallelization of tree reductions in dynamic programming , 2006, SPAA '06.

[27]  Wei-Ngan Chin,et al.  Parallelization in calculational forms , 1998, POPL '98.

[28]  Jeremy Gibbons,et al.  Computing Downwards Accumulations on Trees Quickly , 1996, Theor. Comput. Sci..

[29]  Sam Lindley,et al.  Generating Performance Portable Code using Rewrite Rules , 2015 .

[30]  Sergei Gorlatch,et al.  Patterns and Skeletons for Parallel and Distributed Computing , 2002, Springer London.

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

[32]  Peter Kilpatrick,et al.  Cost-Directed Refactoring for Parallel Erlang Programs , 2013, International Journal of Parallel Programming.

[33]  Marco Aldinucci Automatic Program Transformation: The Meta Tool for Skeleton-based Languages , 2002 .

[34]  Maarten M. Fokkinga,et al.  Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire , 1991, FPCA.

[35]  Sergei Gorlatch,et al.  Extracting and Implementing List Homomorphisms in Parallel Program Development , 1999, Sci. Comput. Program..

[36]  Yu Liu,et al.  Towards Systematic Parallel Programming over MapReduce , 2011, Euro-Par.

[37]  Jeremy Gibbons The Third Homomorphism Theorem , 1996, J. Funct. Program..

[38]  Peter Kilpatrick,et al.  A language-independent parallel refactoring framework , 2012, WRT '12.

[39]  David B. Skillicorn,et al.  The Bird-Meertens Formalism as a Parallel Model , 1993 .

[40]  Sergei Gorlatch,et al.  Parallelization of divide-and-conquer in the Bird-Meertens formalism , 1995, Formal Aspects of Computing.

[41]  Nobuko Yoshida,et al.  Protocol-based verification of message-passing parallel programs , 2015, OOPSLA.

[42]  Benjamin Grégoire,et al.  Type-Based Termination with Sized Products , 2008, CSL.

[43]  Masato Takeichi,et al.  A calculational fusion system HYLO , 1997, Algorithmic Languages and Calculi.

[44]  Sergei Gorlatch,et al.  Turing Universality of Recursive Patterns for Parallel Programming , 2002, Parallel Process. Lett..

[45]  Wentong Cai,et al.  A Cost Calculus for Parallel Functional Programming , 1995, J. Parallel Distributed Comput..