Parallel application development using skeleton functions

John Darlington

(Imperial College)

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 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 functional languages in the first place.

We have been developing a methodology which is a compromise between the extremes of explicit imperative parallel programming and implicit functional programming. This methodology use a repertoire of higher-order parallel forms, skeletons, as the basic building blocks for parallel implementations and provides program transformations which 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. The ideas underlying skeleton programming can be extended into particular application domains facilitating the construction of domain specific parallel application generators.

This talk will outline the philosophy underlying skeleton based application development, contrasting it with the general purpose programming approach and describe current implementation and performance results.
Tuesday 15th March 1994, 14:30
Seminar Room 322
Department of Computer Science