A divide-and-conquer parallel pattern implementation for multicores

Marco Danelutto, Tiziano De Matteis, Gabriele Mencagli, Massimo Torquati

Research output: Chapter in Book / Report / Conference proceedingConference contributionAcademicpeer-review

Abstract

Divide-and-Conquer (DaC) is a sequential programming paradigm which models a large class of algorithms used in real-life applications. Although suitable to extract parallelism in a straightforward way, the parallel implementation of DaC algorithms still requires some expertise in parallel programming tools by the programmer. In this paper we aim at providing to non-expert programmers a high-level solution for fast prototyping parallel DaC programs on multicores with minimal programming effort. Following the rationale of parallel design pattern methodology, we design a C++11-compliant template interface for developing parallel DaC programs. The interface is implemented using different back-end frameworks (i.e. OpenMP, Intel TBB and FastFlow) supporting source code reuse and a certain amount of performance portability. Experiments on a 24-core Intel server show the effectiveness of our approach: with a reduced programming effort the programmer easily prototypes parallel versions with performance comparable with hand-made parallelizations.
Original languageEnglish
Title of host publicationSEPS 2016 - Proceedings of the 3rd International Workshop on Software Engineering for Parallel Systems, co-located with SPLASH 2016
EditorsA. Jannesari, Y. Sato, S. Winter
PublisherAssociation for Computing Machinery, Inc
Pages10-19
ISBN (Electronic)9781450346412
DOIs
Publication statusPublished - 21 Oct 2016
Externally publishedYes
Event3rd International Workshop on Software Engineering for Parallel Systems, SEPS 2016 - Amsterdam, Netherlands
Duration: 1 Nov 2016 → …

Conference

Conference3rd International Workshop on Software Engineering for Parallel Systems, SEPS 2016
Country/TerritoryNetherlands
CityAmsterdam
Period1/11/16 → …

Fingerprint

Dive into the research topics of 'A divide-and-conquer parallel pattern implementation for multicores'. Together they form a unique fingerprint.

Cite this