Parallel Design Patterns and Stream Parallelism

By J. Daniel Garcia

Parallel design patterns (also referred as skeletons) allow to express computations in terms of well known patterns and have allowed to have a common vocabulary (e.g. reduce, map/reduce, stencil, …​).

In this talk I will present GrPPI (Generic and reusable Parallel Patterns Interface), an experimental library developed at UC3M for expressing parallelism through patterns.

The talk will focus specially in stream parallelism. A model of computation where items are processed in a pipelined mode and which is suitable for a number of applications where flow of data need to be processed (examples range from video processing to tweet sentiment analysis). I will also highlight the composability property of streaming patterns which allows using them as building blocks to express complex computations.

One of the design principles of GrPPI is its support of multiple back-ends. It currently supports sequential, OpenMP, IntelTBB, and plain threads (ISO C++ threads). More backends are on the way (e.g. Thrust or SYCL).

GrPPI is open source and available at github (