Skip to main content

Implementing a High-Level Distributed-Memory Parallel Haskell in Haskell

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 7257))

Abstract

We present the initial design, implementation and preliminary evaluation of a new distributed-memory parallel Haskell, HdpH. The language is a shallowly embedded parallel extension of Haskell that supports high-level semi-explicit parallelism, is scalable, and has the potential for fault tolerance. The HdpH implementation is designed for maintainability without compromising performance too severely. To provide maintainability the implementation is modular and layered and, crucially, coded in vanilla Concurrent Haskell. Initial performance results are promising for three simple data parallel or divide-and-conquer programs, e. g., an absolute speedup of 135 on 168 cores of a Beowulf cluster.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   54.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   72.00
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Armstrong, J.L., Virding, S.R., Williams, M.C., Wikstrom, C.: Concurrent Programming in Erlang, 2nd edn. Prentice-Hall (1996)

    Google Scholar 

  2. Berthold, J.: Explicit and implicit parallel functional programming: concepts and implementation. Ph.D. thesis, Philipps-Universität Marburg, Germany (2008)

    Google Scholar 

  3. Berthold, J., Al Zain, A., Loidl, H.-W.: Scheduling Light-Weight Parallelism in ArTCoP. In: Hudak, P., Warren, D.S. (eds.) PADL 2008. LNCS, vol. 4902, pp. 214–229. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  4. Chakravarty, M.M.T., Leshchinskiy, R., Peyton-Jones, S.L., Keller, G., Marlow, S.: Data Parallel Haskell: a status report. In: DAMP 2007, Nice, France, pp. 10–18. ACM Press (2007)

    Google Scholar 

  5. Claessen, K.: A poor man’s concurrency monad. J. Funct. Program. 9(3), 313–323 (1999)

    Article  MATH  Google Scholar 

  6. Epstein, J., Black, A.P., Peyton-Jones, S.L.: Towards Haskell in the cloud. In: Haskell 2011, Tokyo, Japan. pp. 118–129. ACM Press (2011)

    Google Scholar 

  7. Grelck, C., Scholz, S.B.: SAC - a functional array language for efficient multi-threaded execution. International Journal of Parallel Programming 34(4), 383–427 (2006)

    Article  MATH  Google Scholar 

  8. Harrison, W.L.: The Essence of Multitasking. In: Johnson, M., Vene, V. (eds.) AMAST 2006. LNCS, vol. 4019, pp. 158–172. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  9. Haskell distributed parallel Haskell, https://github.com/PatrickMaier/HdpH

  10. HPC-GAP: High Performance Computational Algebra and Discrete Mathematics, http://www-circa.mcs.st-andrews.ac.uk/hpcgap.php

  11. Klusik, U., Ortega, Y., Peña, R.: Implementing Eden - or: Dreams Become Reality. In: Hammond, K., Davie, T., Clack, C. (eds.) IFL 1998. LNCS, vol. 1595, pp. 103–119. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  12. Li, P., Marlow, S., Peyton-Jones, S.L., Tolmach, A.P.: Lightweight concurrency primitives for GHC. In: Haskell 2007, Freiburg, Germany, pp. 107–118. ACM Press (2007)

    Google Scholar 

  13. Loogen, R., Ortega-Mallén, Y., Peña-Marí, R.: Parallel functional programming in Eden. J. Funct. Program. 15(3), 431–475 (2005)

    Article  MATH  Google Scholar 

  14. Maier, P., Trinder, P.W.: Implementing a high-level distributed-memory parallel Haskell in Haskell. Tech. Rep. HW-MACS-TR-0091, Heriot-Watt University (2011), http://www.macs.hw.ac.uk/~pm175/papers/Maier_Trinder_IFL2011_XT.pdf

  15. Marlow, S., Maier, P., Loidl, H.W., Aswad, M.K., Trinder, P.W.: Seq no more: Better strategies for parallel Haskell. In: Haskell 2010, Baltimore, USA, pp. 91–102. ACM Press (2010)

    Google Scholar 

  16. Marlow, S., Newton, R., Peyton-Jones, S.L.: A monad for deterministic parallelism. In: Haskell 2011, Tokyo, Japan, pp. 71–82. ACM Press (2011)

    Google Scholar 

  17. Marlow, S., Peyton-Jones, S.L., Singh, S.: Runtime support for multicore Haskell. In: ICFP 2009, Edinburgh, Scotland, pp. 65–78. ACM Press (2009)

    Google Scholar 

  18. Peyton-Jones, S.L., Gordon, A., Finne, S.: Concurrent Haskell. In: POPL 1996, St. Petersburg Beach, USA, pp. 295–308 (1996)

    Google Scholar 

  19. Pointon, R.F., Trinder, P.W., Loidl, H.-W.: The Design and Implementation of Glasgow Distributed Haskell. In: Mohnen, M., Koopman, P. (eds.) IFL 2000. LNCS, vol. 2011, pp. 53–70. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  20. Trinder, P.W., Hammond, K., Loidl, H.W., Peyton-Jones, S.L.: Algorithms + strategy = parallelism. J. Funct. Program. 8(1), 23–60 (1998)

    Article  MathSciNet  Google Scholar 

  21. Trinder, P.W., Hammond, K., Mattson Jr., J.S., Partridge, A.S., Peyton-Jones, S.L.: GUM: A portable parallel implementation of Haskell. In: PLDI 1996, Philadelphia, USA, pp. 79–88. ACM Press (1996)

    Google Scholar 

  22. Trinder, P.W., Loidl, H.W., Pointon, R.F.: Parallel and distributed Haskells. J. Funct. Program. 12(4&5), 469–510 (2002)

    MathSciNet  MATH  Google Scholar 

  23. Wiger, U.: What is Erlang-style concurrency?, http://ulf.wiger.net/weblog/2008/02/06/what-is-erlang-style-concurrency/

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2012 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Maier, P., Trinder, P. (2012). Implementing a High-Level Distributed-Memory Parallel Haskell in Haskell. In: Gill, A., Hage, J. (eds) Implementation and Application of Functional Languages. IFL 2011. Lecture Notes in Computer Science, vol 7257. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-34407-7_3

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-34407-7_3

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-34406-0

  • Online ISBN: 978-3-642-34407-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics