Skip to main content

Parallelising a large functional program or: Keeping LOLITA busy

  • Conference paper
  • First Online:
Implementation of Functional Languages (IFL 1997)

Abstract

In this paper we report on the ongoing parallelisation of LOLITA, a natural language engineering system. Although LOLITA currently exhibits only modest parallelism, we believe that it is the largest parallel functional program ever, comprising more than 47,000 lines of Haskell. LOLITA has the following interesting features common to real world applications of lazy languages:

  • the code was not specifically designed for parallelism;

  • laziness is essential for efficiency in LOLITA;

  • LOLITA interfaces to data structures outside the Haskell heap, using a foreign language interface;

  • LOLITA was not written by those most closely involved in the parallelisation.

Our expectations in parallelising the program were to achieve moderate speedups with small changes in the code. To date speedups of up to 2.4 have been achieved for LOLITA running under a realistic simulation of our 4 processor shared-memory target machine. Most notably, the parallelism is achieved with a very small number of changes to, and without requiring an understanding of most of the application. On the Sun SPARCserver target machine wall-clock speedup is currently limited by physical memory availability.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. K. Davis. MPP Parallel Haskell. In IFL'96 — Intl. Workshop on the Implementation of Functional Languages, pp. 49–54, Bad Godesberg, Germany, Sep. 1996. Draft Proceedings.

    Google Scholar 

  2. A. Gill and P. Wadler. Real World Applications of Functional Programs. 〈URL:http://www.dcs. gla.ac.uk/fp/realworld.html〉

    Google Scholar 

  3. 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. 〈URL:http://www.dcs.st-and.ac.uk/~kh/papers/hpfc95/hpfc95.html〉

    Google Scholar 

  4. S. Junaidu. NAIRA: A Parallel Haskell Compiler. In IFL'97 — Intl. Workshop on the Implementation of Functional Languages, Univ. of St. Andrews, Scotland, Sep. 10–12, 1997.

    Google Scholar 

  5. H-W. Loidl and P.W. Trinder. Engineering Large Parallel Functional Programs. In IFL'97 — Intl. Workshop on the Implementation of Functional Languages, Univ. of St. Andrews, Scotland, Sep. 10–12, 1997.

    Google Scholar 

  6. D. Long and R. Garigliano. Inheritance hierarchies. Technical Report 4/88, Dept. of Computer Science, Univ. of Durham, 1988.

    Google Scholar 

  7. D. Long and R. Garigliano. Reasoning by Analogy and Causality: A model and application. Artificial Intelligence. Ellis Horwood, 1994.

    Google Scholar 

  8. R.G. Morgan, M.H. Smith, and S. Short. Translation by Meaning and Style in Lolita. In Intl. BCS Conf. — Machine Translation Ten Years On, Cranfield University, Nov. 1994.

    Google Scholar 

  9. P.W. Trinder, K. Hammond, H-W. Loidl, and S.L. Peyton Jones. Algorithm + Strategy = Parallelism. Journal of Functional Programming, 8(1), Jan. 1998.

    Google Scholar 

  10. P.W. 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.

    Google Scholar 

  11. N. Winstanley. A Type-Sensitive Preprocessor for Haskell. In Glasgow Workshop on Functional Programming, Ullapool, Scotland, Sep. 15–17, 1997.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Chris Clack Kevin Hammond Tony Davie

Rights and permissions

Reprints and permissions

Copyright information

© 1998 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Loidl, HW. et al. (1998). Parallelising a large functional program or: Keeping LOLITA busy. 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/BFb0055432

Download citation

  • DOI: https://doi.org/10.1007/BFb0055432

  • 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

Publish with us

Policies and ethics