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

  • Patrick Maier
  • Phil Trinder
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7257)


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.


Fault Tolerance Absolute Speedup Closure Elimination Algorithmic Skeleton Beowulf Cluster 
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.
    Armstrong, J.L., Virding, S.R., Williams, M.C., Wikstrom, C.: Concurrent Programming in Erlang, 2nd edn. Prentice-Hall (1996)Google Scholar
  2. 2.
    Berthold, J.: Explicit and implicit parallel functional programming: concepts and implementation. Ph.D. thesis, Philipps-Universität Marburg, Germany (2008)Google Scholar
  3. 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)CrossRefGoogle Scholar
  4. 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. 5.
    Claessen, K.: A poor man’s concurrency monad. J. Funct. Program. 9(3), 313–323 (1999)zbMATHCrossRefGoogle Scholar
  6. 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. 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)zbMATHCrossRefGoogle Scholar
  8. 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)CrossRefGoogle Scholar
  9. 9.
    Haskell distributed parallel Haskell,
  10. 10.
    HPC-GAP: High Performance Computational Algebra and Discrete Mathematics,
  11. 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)CrossRefGoogle Scholar
  12. 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. 13.
    Loogen, R., Ortega-Mallén, Y., Peña-Marí, R.: Parallel functional programming in Eden. J. Funct. Program. 15(3), 431–475 (2005)zbMATHCrossRefGoogle Scholar
  14. 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),
  15. 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. 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. 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. 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. 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)CrossRefGoogle Scholar
  20. 20.
    Trinder, P.W., Hammond, K., Loidl, H.W., Peyton-Jones, S.L.: Algorithms + strategy = parallelism. J. Funct. Program. 8(1), 23–60 (1998)MathSciNetCrossRefGoogle Scholar
  21. 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. 22.
    Trinder, P.W., Loidl, H.W., Pointon, R.F.: Parallel and distributed Haskells. J. Funct. Program. 12(4&5), 469–510 (2002)MathSciNetzbMATHGoogle Scholar
  23. 23.

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Patrick Maier
    • 1
  • Phil Trinder
    • 1
  1. 1.School of Mathematical and Computer SciencesHeriot-Watt UniversityEdinburghUK

Personalised recommendations