A DSL Based Toolchain for Design Space Exploration in Structured Parallel Programming

We introduce a DSL based toolchain supporting the design of parallel applications where parallelism is structured after parallel design pattern compositions. A DSL provides the possibility to write high level parallel design pattern expressions representing the structure of parallel applications, to refactor the pattern expressions, to evaluate their non-functional properties (e.g. ideal performance, total parallelism degree, etc.) and finally to generate parallel code ready to be compiled and run on different target architectures. We discuss a proof-of-concept prototype implementation of the proposed toolchain generating FastFlow code and show some preliminary results achieved using the prototype implementation.

[1]  Marco Danelutto,et al.  Structured Parallel Programming with "core" FastFlow , 2013, CEFP.

[2]  Dalvan Griebler,et al.  Towards a Domain-Specific Language for Patterns-Oriented Parallel Programming , 2013, SBLP.

[3]  Peter Kilpatrick,et al.  State access patterns in embarrassingly parallel computations , 2016, ArXiv.

[4]  Ákos Horváth,et al.  Multi-objective optimization in rule-based design space exploration , 2014, ASE.

[5]  Uday Bondhugula,et al.  PolyMage: Automatic Optimization for Image Processing Pipelines , 2015, ASPLOS.

[6]  Timothy G. Mattson,et al.  Patterns for parallel programming , 2004 .

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

[8]  Herbert Kuchen,et al.  Algorithmic skeletons for multi-core, multi-GPU systems and clusters , 2012, Int. J. High Perform. Comput. Netw..

[9]  Gordon L. Kindlmann,et al.  Diderot: a parallel DSL for image analysis and visualization , 2012, PLDI.

[10]  James C. Sutherland,et al.  Nebo: An efficient, parallel, and portable domain-specific language for numerically solving partial differential equations , 2017, J. Syst. Softw..

[11]  Horacio González-Vélez,et al.  A survey on statistical disclosure control and micro-aggregation techniques for secure statistical databases , 2010 .

[12]  Christoph W. Kessler,et al.  SkePU: a multi-backend skeleton programming library for multi-GPU systems , 2010, HLPP '10.

[13]  Kunle Olukotun,et al.  Delite , 2014, ACM Trans. Embed. Comput. Syst..

[14]  Bradley C. Kuszmaul,et al.  The pochoir stencil compiler , 2011, SPAA '11.

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

[16]  Bo Joel Svensson,et al.  Design Exploration through Code-generating DSLs , 2014, ACM Queue.