AESOP home


Parallel Programming Using Skeleton Functions

John Darlington, A. J. Field, Peter G. Harrison, Paul Kelly, D W N Sharp, Qiang Wu, R. Lyndon While

Conference or Workshop Paper
PARLE'93, 5th International PARLE Conference on Parallel Architectures and Languages Europe
May, 1993
Lecture Notes in Computer Science
Volume 694
DOI 10.1007/3-540-56891-3_12

Programming parallel machines is notoriously difficult. Factors contributing to this difficulty include the complexity of concurrency, the effect of resource allocation on performance and the current diversity of parallel machine models. The net result is that effective portability, which depends crucially on the predictability of performance, has been lost. Functional programming languages have been put forward as solutions to these problems, because of the availability of implicit parallelism. However, performance will be generally poor unless the issue of resource allocation is addressed explicitly, diminishing the advantage of using a functional language in the first place.

We present a methodology which is a compromise between the extremes of explicit imperative programming and implicit functional programming. We use a repertoire of higher-order parallel forms, skeletons, as the basic building blocks for parallel implementations and provide program transformations which can convert between skeletons, giving portability between differing machines. Resource allocation issues are documented for each skeleton/machine pair and are addressed explicitly during implementation in an interactive, selective manner, rather than by explicit programming.

PDF of full publication (765 kilobytes)
(need help viewing PDF files?)

Information from