Rewriting skeleton programs: how to evaluate the data-parallel stream-parallel tradeoff

Marco Aldinucci, Massimo Coppola and Marco Danelutto

Abstract

Some skeleton based parallel programming models allow the programmer to use both data and stream parallel skeletons within the same program.

It is known that particular skeleton nestings can be formally rewritten into different nestings that preserve the functional semantics. Indeed, the kind and possibly the amount of parallelism usefully exploitable may change while rewriting takes place.

Here we discuss an original framework allowing the user (and/or the compiling tools) of a skeleton based parallel programming language to evaluate whether or not the transformation of a skeleton program is worthwhile in terms of the final program performance. We address, in particular, the evaluation of transformations exchanging data parallel and stream parallel skeleton subtrees.