posted on 2016-12-16, 12:41authored byVenkatesh Kannan, Geoff W. Hamilton
Algorithmic skeletons are used as building-blocks to ease the task of parallel programming by abstracting
the details of parallel implementation from the developer. Most existing libraries provide
implementations of skeletons that are defined over flat data types such as lists or arrays. However,
skeleton-based parallel programming is still very challenging as it requires intricate analysis of the
underlying algorithm and often uses inefficient intermediate data structures. Further, the algorithmic
structure of a given program may not match those of list-based skeletons. In this paper, we present
a method to automatically transform any given program to one that is defined over a list and is more
likely to contain instances of list-based skeletons. This facilitates the parallel execution of a transformed
program using existing implementations of list-based parallel skeletons. Further, by using an
existing transformation called distillation in conjunction with our method, we produce transformed
programs that contain fewer inefficient intermediate data structures.
History
Publication
Proceedings of the Fourth International Workshop on Verification and Program Transformation;