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
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Armstrong, J.L., Virding, S.R., Williams, M.C., Wikstrom, C.: Concurrent Programming in Erlang, 2nd edn. Prentice-Hall (1996)
Berthold, J.: Explicit and implicit parallel functional programming: concepts and implementation. Ph.D. thesis, Philipps-Universität Marburg, Germany (2008)
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)
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)
Claessen, K.: A poor man’s concurrency monad. J. Funct. Program. 9(3), 313–323 (1999)
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)
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)
Harrison, W.L.: The Essence of Multitasking. In: Johnson, M., Vene, V. (eds.) AMAST 2006. LNCS, vol. 4019, pp. 158–172. Springer, Heidelberg (2006)
Haskell distributed parallel Haskell, https://github.com/PatrickMaier/HdpH
HPC-GAP: High Performance Computational Algebra and Discrete Mathematics, http://www-circa.mcs.st-andrews.ac.uk/hpcgap.php
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)
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)
Loogen, R., Ortega-Mallén, Y., Peña-Marí, R.: Parallel functional programming in Eden. J. Funct. Program. 15(3), 431–475 (2005)
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
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)
Marlow, S., Newton, R., Peyton-Jones, S.L.: A monad for deterministic parallelism. In: Haskell 2011, Tokyo, Japan, pp. 71–82. ACM Press (2011)
Marlow, S., Peyton-Jones, S.L., Singh, S.: Runtime support for multicore Haskell. In: ICFP 2009, Edinburgh, Scotland, pp. 65–78. ACM Press (2009)
Peyton-Jones, S.L., Gordon, A., Finne, S.: Concurrent Haskell. In: POPL 1996, St. Petersburg Beach, USA, pp. 295–308 (1996)
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)
Trinder, P.W., Hammond, K., Loidl, H.W., Peyton-Jones, S.L.: Algorithms + strategy = parallelism. J. Funct. Program. 8(1), 23–60 (1998)
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)
Trinder, P.W., Loidl, H.W., Pointon, R.F.: Parallel and distributed Haskells. J. Funct. Program. 12(4&5), 469–510 (2002)
Wiger, U.: What is Erlang-style concurrency?, http://ulf.wiger.net/weblog/2008/02/06/what-is-erlang-style-concurrency/
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)