Challenging the abstraction penalty in parallel patterns libraries Articles uri icon

authors

  • GARCIA SANCHEZ, JOSE DANIEL
  • RIO ASTORGA, DAVID DEL
  • ALDINUCCI, MARCO
  • TORDINI, FABIO
  • DANELUTTO, MARCO
  • MENCAGLI, GABRIELE
  • TORQUATI, MASSIMO

publication date

  • July 2020

start page

  • 5139

end page

  • 5159

volume

  • 76

International Standard Serial Number (ISSN)

  • 0920-8542

Electronic International Standard Serial Number (EISSN)

  • 1573-0484

abstract

  • In the last years, pattern-based programming has been recognized as a good practice for efficiently exploiting parallel hardware resources. Following this approach, multiple libraries have been designed for providing such high-level abstractions to ease the parallel programming. However, those libraries do not share a common interface. To pave the way, GrPPI has been designed for providing an intermediate abstraction layer between application developers and existing parallel programming frameworks like OpenMP, Intel TBB or ISO C++ threads. On the other hand, FastFlow has been adopted as an efficient object-based programming framework that may benefit from being supported as an additional GrPPI backend. However, the object-based approach presents some major challenges to be incorporated under the GrPPI type safe functional programming style. In this paper, we present the integration of FastFlow as a new GrPPI backend to demonstrate that structured parallel programming frameworks perfectly fit the GrPPI design. Additionally, we also demonstrate that GrPPI does not incur in additional overheads for providing its abstraction layer, and we study the programmability in terms of lines of code and cyclomatic complexity. In general, the presented work acts as reciprocal validation of both FastFlow (as an efficient, native structured parallel programming framework) and GrPPI (as an efficient abstraction layer on top of existing parallel programming frameworks).

keywords

  • parallel design patterns; data-intensive computing; stream computing; algorithmic skeletons