Towards semi-automatic data-type translation for parallelism in Erlang

As part of ongoing research into programmer-in-the-loop parallelisation, we are studying the problem of automatically introducing alternative data structures to support parallelism. Our goal is to make it easier to produce the best parallelisation for some given program, or even to make parallelisation feasible. We use a refactoring approach to choose and introduce these transformations for specific algorithmic skeletons, structured forms of parallelism that capture common patterns of parallelism.

[1]  Huiqing Li,et al.  Refactoring with wrangler, updated: data and process refactorings, and integration with eclipse , 2008, ERLANG '08.

[2]  Serge Chaumette,et al.  HPFIT: A Set of Integrated Tools for the Parallelization of Applications Using High Performance Fortran. PART I: HPFIT and the TransTOOL Environment , 1997, Parallel Comput..

[3]  Frank Tip,et al.  Refactoring support for class library migration , 2005, OOPSLA '05.

[4]  Danny Dig A Refactoring Approach to Parallelism , 2011, IEEE Software.

[5]  Aleksander Byrski,et al.  Using Program Shaping and Algorithmic Skeletons to Parallelise an Evolutionary Multi-Agent System in Erlang , 2016, Comput. Informatics.

[6]  Konstantinos Sagonas,et al.  Automatic refactoring of Erlang programs , 2009, PPDP '09.

[7]  Piet Hut,et al.  A hierarchical O(N log N) force-calculation algorithm , 1986, Nature.

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

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

[10]  Dániel Horpácsi Extending Erlang by utilising RefactorErl , 2013, Erlang '13.

[11]  Leslie Lamport,et al.  The parallel execution of DO loops , 1974, CACM.

[12]  Murray Cole,et al.  Bringing skeletons out of the closet: a pragmatic manifesto for skeletal parallel programming , 2004, Parallel Comput..

[13]  Zoltán Horváth,et al.  Discovering parallel pattern candidates in Erlang , 2014, Erlang Workshop.

[14]  Horacio González-Vélez,et al.  A survey of algorithmic skeleton frameworks: high‐level structured parallel programming enablers , 2010, Softw. Pract. Exp..

[15]  Huiqing Li,et al.  An Expression Processor: A Case Study in Refactoring Haskell Programs , 2010, Trends in Functional Programming.

[16]  Huiqing Li,et al.  Safe Concurrency Introduction through Slicing , 2015, PEPM.

[17]  Vladimir Janjic,et al.  Agricultural Reform: More Efficient Farming Using Advanced Parallel Refactoring Tools , 2014, 2014 22nd Euromicro International Conference on Parallel, Distributed, and Network-Based Processing.

[18]  John H. Reppy,et al.  Manticore: a heterogeneous parallel language , 2007, DAMP '07.

[19]  Vladimir Janjic,et al.  Lapedo: Hybrid Skeletons for Programming Heterogeneous Multicore Machines in Erlang , 2015, PARCO.

[20]  Ralf Lämmel,et al.  Towards generic refactoring , 2002, RULE '02.

[21]  Hans-Wolfgang Loidl,et al.  Algorithm + strategy = parallelism , 1998, Journal of Functional Programming.

[22]  Murray Cole,et al.  Algorithmic skeletons : a structured approach to the management of parallel computation , 1988 .

[23]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).