Proc. of Intl. Euromicro PDP 2012: Parallel Distributed and network-based Processing — 2012
Parallel patterns + Macro Data Flow for multi-core programming
Marco Aldinucci, Marco Danelutto, Lorenzo Anardu, Massimo Torquati, Peter Kilpatrick
Abstract
Data flow techniques have been around since the early '70s when they were used in compilers for sequential languages. Shortly after their introduction they were also considered as a possible model for parallel computing, although the impact here was limited. Recently, however, data flow has been identified as a candidate for efficient implementation of various programming models on multi-core architectures. In most cases, however, the burden of determining data flow “macro” instructions is left to the programmer, while the compiler/run time system manages only the efficient scheduling of these instructions. We discuss a structured parallel programming approach supporting automatic compilation of programs to macro data flow and we show experimental results demonstrating the feasibility of the approach and the efficiency of the resulting “object” code on different classes of state-of-the-art multi-core architectures. The experimental results use different base mechanisms to implement the macro data flow run time support, from plain pthreads with condition variables to more modern and effective lock- and fence-free parallel frameworks. Experimental results comparing efficiency of the proposed approach with those achieved using other, more classical, parallel frameworks are also presented.
@inproceedings{dataflow:pdp:12,
abstract = {Data flow techniques have been around since the early '70s when they were used in compilers for sequential languages. Shortly after their introduction they were also considered as a possible model for parallel computing, although the impact here was limited. Recently, however, data flow has been identified as a candidate for efficient implementation of various programming models on multi-core architectures. In most cases, however, the burden of determining data flow ``macro'' instructions is left to the programmer, while the compiler/run time system manages only the efficient scheduling of these instructions. We discuss a structured parallel programming approach supporting automatic compilation of programs to macro data flow and we show experimental results demonstrating the feasibility of the approach and the efficiency of the resulting ``object'' code on different classes of state-of-the-art multi-core architectures. The experimental results use different base mechanisms to implement the macro data flow run time support, from plain pthreads with condition variables to more modern and effective lock- and fence-free parallel frameworks. Experimental results comparing efficiency of the proposed approach with those achieved using other, more classical, parallel frameworks are also presented.},
address = {Garching, Germany},
author = {Marco Aldinucci and Marco Danelutto and Lorenzo Anardu and Massimo Torquati and Peter Kilpatrick},
booktitle = {Proc. of Intl. Euromicro PDP 2012: Parallel Distributed and network-based Processing},
date-added = {2012-10-24 17:29:14 +0000},
date-modified = {2013-11-24 00:35:34 +0000},
doi = {10.1109/PDP.2012.44},
keywords = {fastflow},
month = feb,
pages = {27--36},
publisher = {IEEE},
title = {Parallel patterns + Macro Data Flow for multi-core programming},
url = {http://calvados.di.unipi.it/storage/paper_files/2012_mdf_PDP.pdf},
year = {2012},
bdsk-url-1 = {http://calvados.di.unipi.it/storage/paper_files/2012_mdf_PDP.pdf},
bdsk-url-2 = {http://dx.doi.org/10.1109/PDP.2012.44}}