High-Level and Productive Stream Parallelism for Dedup, Ferret, and Bzip2

Parallel programming has been a challenging task for application programmers. Stream processing is an application domain present in several scientific, enterprise, and financial areas that lack suitable abstractions to exploit parallelism. Our goal is to assess the feasibility of state-of-the-art frameworks/libraries (Pthreads, TBB, and FastFlow) and the SPar domain-specific language for real-world streaming applications (Dedup, Ferret, and Bzip2) targeting multi-core architectures. SPar was specially designed to provide high-level and productive stream parallelism abstractions, supporting programmers with standard C++-11 annotations. For the experiments, we implemented three streaming applications. We discussed SPar’s programmability advantages compared to the frameworks in terms of productivity and structured parallel programming. The results demonstrate that SPar improves productivity and provides the necessary features to achieve similar performances compared to the state-of-the-art.

[1]  William Thies,et al.  Language and compiler support for stream programs , 2009 .

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

[3]  Arch D. Robison,et al.  Structured Parallel Programming: Patterns for Efficient Computation , 2012 .

[4]  Emmanuel Jeannot,et al.  Euro-Par 2011 Parallel Processing , 2011, Lecture Notes in Computer Science.

[5]  Marco Danelutto,et al.  FastFlow: High-level and Efficient Streaming on Multi-core , 2017 .

[6]  Ralph E. Johnson,et al.  Expressing pipeline parallelism using TBB constructs: a case study on what works and what doesn't , 2011, SPLASH Workshops.

[7]  Eduard Ayguadé,et al.  PARSECSs: Evaluating the Impact of Task Parallelism in the PARSEC Benchmark Suite , 2016, ACM Trans. Archit. Code Optim..

[8]  Marco Danelutto,et al.  An Embedded C++ Domain-Specific Language for Stream Parallelism , 2015, PARCO.

[9]  José Daniel García Sánchez,et al.  A generic parallel pattern interface for stream and data processing , 2017, Concurr. Comput. Pract. Exp..

[10]  Robert Grimm,et al.  Dynamic expressivity with static optimization for streaming languages , 2013, DEBS '13.

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

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

[13]  Marco Danelutto,et al.  P3ARSEC: towards parallel patterns benchmarking , 2017, SAC.

[14]  Peter Kilpatrick,et al.  Accelerating Code on Multi-cores with FastFlow , 2011, Euro-Par.

[15]  James Reinders,et al.  Intel® threading building blocks , 2008 .

[16]  David Zhang,et al.  A lightweight streaming layer for multicore execution , 2008, CARN.

[17]  Linda M. Laird,et al.  Software Measurement and Estimation: A Practical Approach , 2006 .

[18]  Charles E. Leiserson,et al.  On-the-Fly Pipeline Parallelism , 2015, ACM Trans. Parallel Comput..

[19]  Rafael Asenjo,et al.  Analytical Modeling of Pipeline Parallelism , 2009, 2009 18th International Conference on Parallel Architectures and Compilation Techniques.

[20]  Kai Li,et al.  The PARSEC benchmark suite: Characterization and architectural implications , 2008, 2008 International Conference on Parallel Architectures and Compilation Techniques (PACT).

[21]  Marco Danelutto,et al.  SPar: A DSL for High-Level and Productive Stream Parallelism , 2017, Parallel Process. Lett..

[22]  Dalvan Griebler,et al.  Domain-specific language & support tools for high-level stream parallelism , 2016 .

[23]  S. Tucker Taft,et al.  Information technology — Programming Languages — Ada , 2001 .