Abstract
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.
Preview
Unable to display preview. Download preview PDF.
References
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.
M. Cole, Algorithmic Skeletons: Structured Management of Parallel Computation, Pitman/MIT Press, 1989.
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.
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.
J. Darlington, M.J. Reeve and S. Wright, Programming Parallel Computer Systems using Functional Languages and Program Transformation, in Parallel Processing '89, Leiden, 1989.
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).
P.G. Harrison and N. Patel, Performance Modelling: Application to Communication Networks and Computer Architecture, Addison-Wesley, 1992.
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.
C. A. Isaac, Structural Implementations of Functional Skeletons, MSc Project Report, Dept. of Computing, Imperial College 1992.
G.K. Jouret, Compiling Functional Languages for SIMD Architectures, 3rd IEEE Symposium on Parallel and Distributed Processing, Dallas, December 1991.
P.H.J. Kelly, Functional Programming for Loosely-coupled Microprocessors, Pitman/MIT Press, 1989.
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.
Meiko Ltd., CS Tools for SunOS, 1990 Edition: 83-009A00-02.02.
G. Papachrysantou, High Level Forms for Computation in Solid Modelling, MSc Project Report, Dept. of Computing, Imperial College 1992.
N. Perry, Hope+, Internal document IC/FPR/LANG/2.5.1/7, Dept. of Computing, Imperial College, 1989.
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.
L.G. Valiant, General Purpose Parallel Architectures, in Handbook of Theoretical Computer Science, North-Holland, 1990.
R.L. While, Transforming Divide-and-Conquer to Pipeline, Internal note, Dept. of Computing, Imperial College, 1991.
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.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Darlington, J. et al. (1993). Parallel programming using skeleton functions. In: Bode, A., Reeve, M., Wolf, G. (eds) PARLE '93 Parallel Architectures and Languages Europe. PARLE 1993. Lecture Notes in Computer Science, vol 694. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-56891-3_12
Download citation
DOI: https://doi.org/10.1007/3-540-56891-3_12
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-56891-9
Online ISBN: 978-3-540-47779-2
eBook Packages: Springer Book Archive