Abstract
The design and implementation of useful programming languages, whether sequential or parallel, should be driven by large, realistic applications. In constructing several medium- and large-scale programs in Glasgow Parallel Haskell, GpH, a parallel extension of Haskell, the group at Glasgow has investigated several important engineering issues:
-
Real Application Parallelism. The programs achieve good wall-clock speedups and acceptable scale-up on both a shared-memory and a distributed memory machine. The programs typify a number of application areas and use a number of different parallel paradigms, e.g. pipelining or divide- and-conquer, often combining several paradigms in a single program.
-
Language Issues. Although the largely implicit parallelism in GpH is a satisfactory programming model in general the base constructs for introducing and controlling parallelism tend to obfuscate the semantics of large programs. As a result we developed evaluation strategies, a more abstract, and systematic mechanism for introducing and controlling parallelism.
-
Engineering Environment. The development and performance tuning of these programs emphasised the importance of an integrated engineering environment. In the process we have refined components of this environment like the simulator, the runtime system, and the profiling tools.
This is a preview of subscription content, log in via an institution.
Preview
Unable to display preview. Download preview PDF.
References
K. Hammond, H-W. Loidl, and A. Partridge. Visualising Granularity in Parallel Programs: A Graphical Winnowing System for Haskell. In HPFC'95 — High Performance Functional Computing, pp. 208–221, Denver, CO, Apr. 10–12, 1995.
K. Hammond, H-W. Loidl, and P.W. Trinder. Parallel Cost Centre Profiling. In Glasgow Workshop on Functional Programming, Ullapool, Scotland, Sep. 15–17, 1997.
P.H. Hartel, R.F.H. Hofman, K.G. Langendoen, H.L. Muller, W.G. Vree, and L.O. Hertzberger. A Toolkit for Parallel Functional Programming. Concurrency — Practice and Experience, 7(8): 765–793, Dec. 1995.
R.J.M. Hughes. Why Functional Programming Matters. The Computer Journal, 32(2): 98–107, Apr. 1989.
M. Lauer. Computing by Homomorphic Images, pp. 139–168. In Computer Algebra — Symbolic and Algebraic Computation. Springer-Verlag, 1982.
J. D. Lipson. Chinese Remainder and Interpolation Algorithms. In SYMSAM, pp. 372–391, 1971.
H-W. Loidl, R. Morgan, P.W. Trinder, S. Poria, C. Cooper, S.L. Peyton Jones, and R. Garigliano. Parallelising a Large Functional Program; Or: Keeping LOLITA Busy. In IFL'97 — Intl. Workshop on the Implementation of Functional Languages, Univ. of St. Andrews, Scotland, Sep. 10–12, 1997.
H-W. Loidl. Granularity in Large-Scale Parallel Functional Programming. PhD thesis, Dept. of Computing Science, Univ. of Glasgow, Mar. 1998.
H-W. Loidl. LinSolv: a Case Study in Strategic Parallelism. In Glasgow Workshop on Functional Programming, Ullapool, Scotland, Sep. 15–17, 1997.
E. Mohr, D.A. Kranz, and R.H. Halstead Jr. Lazy Task Creation: A Technique for Increasing the Granularity of Parallel Programs. IEEE Transactions on Parallel and Distributed Systems, 2(3): 264–280, Jul. 1991.
A.P. Poulovassilis and C. Small. A Domain-Theoretic Approach to Logic and Functional Databases. In VLDB'93 — Intl. Conf. on Very Large Databases, pp. 415–426, 1993.
P. Roe. Parallel Programming using Functional Languages. PhD thesis, Dept. of Computing Science, Univ. of Glasgow, Feb. 1991.
C. Runciman and D. Wakeling. Profiling Parallel Functional Computations (without Parallel Machines). In Glasgow Workshop on Functional Programming, Workshops in Computing, pp. 236–251, Ayr, Scotland, Jul. 5–7, 1993. Springer-Verlag.
P.M. Sansom and S.L. Peyton Jones. Formally based profiling for higher-order functional languages. ACM Transactions on Programming Languages and Systems, 19(2): 334–385, Mar. 1997.
P.W. Trinder, K. Hammond, H-W. Loidl, and S.L. Peyton Jones. Algorithm + Strategy = Parallelism. Journal of Functional Programming, 8(1), Jan. 1998.
P. Trinder, K. Hammond, H-W. Loidl, S.L. Peyton Jones, and J. Wu. A Case Study of Data-intensive Programs in Parallel Haskell. In Glasgow Workshop on Functional Programming, Ullapool, Scotland, Jul. 8–10, 1996.
P. Trinder, K. Hammond, J.S. Mattson Jr., A.S Partridge, and S.L. Peyton Jones. GUM: a Portable Parallel implementation of Haskell. In PLDI'96 — Programming Languages Design and Implementation, pp. 79–88, Philadelphia, PA, May 1996.
J. Wu and L. Harbird. A Functional Database System for Road Accident Analysis. Advances in Engineering Software, 26(1): 29–43, 1996.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1998 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Loidl, HW., Trinder, P. (1998). Engineering large parallel functional programs. In: Clack, C., Hammond, K., Davie, T. (eds) Implementation of Functional Languages. IFL 1997. Lecture Notes in Computer Science, vol 1467. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0055431
Download citation
DOI: https://doi.org/10.1007/BFb0055431
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-64849-9
Online ISBN: 978-3-540-68528-9
eBook Packages: Springer Book Archive