Parallel programming using skeleton functions

  • J. Darlington
  • A. J. Field
  • P. G. Harrison
  • P. H. J. Kelly
  • D. W. N. Sharp
  • Q. Wu
  • R. L. While
Paper Sessions Language Issues
Part of the Lecture Notes in Computer Science book series (LNCS, volume 694)


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.


Parallel Machine Program Transformation Functional Language Implementation Option Functional Programming Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    J. Backus, Can Programming Be Liberated from the von-Neumann Style? A Functional Style and its Algebra of Programs, CACM vol. 21, no. 8, pp. 613–41, 1978.Google Scholar
  2. [2]
    M. Cole, Algorithmic Skeletons: Structured Management of Parallel Computation, Pitman/MIT Press, 1989.Google Scholar
  3. [3]
    J. Darlington, Y-k. Guo and H.M. Pull, A New Perspective on Integrating Functional and Logic Languages, Conf. on Fifth Generation Computing Systems, Tokyo, June 1992.Google Scholar
  4. [4]
    J. Darlington and H.M. Pull, A Program Development Methodology Based on a Unified Approach to Execution and Transformation, in Partial Evaluation and Mixed Computation, North-Holland, 1988.Google Scholar
  5. [5]
    J. Darlington, M.J. Reeve and S. Wright, Programming Parallel Computer Systems using Functional Languages and Program Transformation, in Parallel Processing '89, Leiden, 1989.Google Scholar
  6. [6]
    P.G. Harrison, Towards the Synthesis of Static Parallel Algorithms: a Categorical Approach, IFIP TC2 Working Conference on Constructing Programs from Specifications, Pacific Grove, California, May 1991 (published as Constructing Programs from Specifications, North-Holland).Google Scholar
  7. [7]
    P.G. Harrison and N. Patel, Performance Modelling: Application to Communication Networks and Computer Architecture, Addison-Wesley, 1992.Google Scholar
  8. [8]
    P. Hudak, S.L. Peyton Jones, P.L. Wadler, B. Boutel, J. Fairburn, J. Fasel, M. Guzmán, K. Hammond, J. Hughes, T. Johnsson, R. Kieburtz, R.S. Nikhil, W. Partain and J. Peterson, Report on the Functional Programming Language Haskell, SIGPLAN Notices 27(5), May 1992.Google Scholar
  9. [9]
    C. A. Isaac, Structural Implementations of Functional Skeletons, MSc Project Report, Dept. of Computing, Imperial College 1992.Google Scholar
  10. [10]
    G.K. Jouret, Compiling Functional Languages for SIMD Architectures, 3rd IEEE Symposium on Parallel and Distributed Processing, Dallas, December 1991.Google Scholar
  11. [11]
    P.H.J. Kelly, Functional Programming for Loosely-coupled Microprocessors, Pitman/MIT Press, 1989.Google Scholar
  12. [12]
    K. Li and P. Hudak, Memory Coherence in Shared Virtual Memory Systems, ACM Transactions on Computer Systems vol.7, no. 4, pp. 329–59, 1989.Google Scholar
  13. [13]
    Meiko Ltd., CS Tools for SunOS, 1990 Edition: 83-009A00-02.02.Google Scholar
  14. [14]
    G. Papachrysantou, High Level Forms for Computation in Solid Modelling, MSc Project Report, Dept. of Computing, Imperial College 1992.Google Scholar
  15. [15]
    N. Perry, Hope+, Internal document IC/FPR/LANG/2.5.1/7, Dept. of Computing, Imperial College, 1989.Google Scholar
  16. [16]
    D.W.N. Sharp and M.D. Cripps, Parallel Algorithms that Solve Problems by Communication, 3rd IEEE Symposium on Parallel and Distributed Processing, Dallas, December 1991.Google Scholar
  17. [17]
    L.G. Valiant, General Purpose Parallel Architectures, in Handbook of Theoretical Computer Science, North-Holland, 1990.Google Scholar
  18. [18]
    R.L. While, Transforming Divide-and-Conquer to Pipeline, Internal note, Dept. of Computing, Imperial College, 1991.Google Scholar
  19. [19]
    J.H. Williams, On the Development of the Algebra of Functional Programs, ACM Transactions on Programming Languages and Systems vol. 4, pp. 733–57, 1982.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1993

Authors and Affiliations

  • J. Darlington
    • 1
  • A. J. Field
    • 1
  • P. G. Harrison
    • 1
  • P. H. J. Kelly
    • 1
  • D. W. N. Sharp
    • 1
  • Q. Wu
    • 1
  • R. L. While
    • 2
  1. 1.Dept. of ComputingImperial CollegeLondon
  2. 2.Dept. of Computer ScienceUniversity of Western AustraliaNedlands

Personalised recommendations