Skip to main content

Eden – Parallel Functional Programming with Haskell

  • Chapter

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

Abstract

Eden is a parallel functional programming language which extends Haskell with constructs for the definition and instantiation of parallel processes. Processes evaluate function applications remotely in parallel. The programmer has control over process granularity, data distribution, communication topology, and evaluation site, but need not manage synchronisation and data exchange between processes. The latter are performed by the parallel runtime system through implicit communication channels, transparent to the programmer. Common and sophisticated parallel communication patterns and topologies, so-called algorithmic skeletons, are provided as higher-order functions in a user-extensible skeleton library written in Eden. Eden is geared toward distributed settings, i.e. processes do not share any data, but can equally well be used on multicore systems. This tutorial gives an up-to-date introduction into Eden’s programming methodology based on algorithmic skeletons, its language constructs, and its layered implementation on top of the Glasgow Haskell compiler.

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   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
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. Alt, M., Gorlatch, S.: Adapting Java RMI for grid computing. Future Generation Computer Systems 21(5), 699–707 (2004)

    Article  Google Scholar 

  2. Batcher, K.E.: Sorting networks and their applications. In: Proc. AFIPS Spring Joint Computer Conference, vol. 32, pp. 307–314 (1968)

    Google Scholar 

  3. Berthold, J.: Towards a Generalised Runtime Environment for Parallel Haskells. In: Bubak, M., van Albada, G.D., Sloot, P.M.A., Dongarra, J. (eds.) ICCS 2004. LNCS, vol. 3038, pp. 297–305. Springer, Heidelberg (2004); Workshop on Practical Aspects of High-level Parallel Programming — PAPP 2004

    Chapter  Google Scholar 

  4. Berthold, J.: Explicit and Implicit Parallel Functional Programming: Concepts and Implementation. PhD thesis, Philipps-Universität Marburg, Germany (2008)

    Google Scholar 

  5. Berthold, J., Dieterle, M., Lobachev, O., Loogen, R.: Distributed Memory Programming on Many-Cores A Case Study Using Eden Divide-&-Conquer Skeletons. In: ARCS 2009, Workshop on Many-Cores. VDE Verlag (2009)

    Google Scholar 

  6. Berthold, J., Dieterle, M., Loogen, R.: Implementing Parallel Google Map-Reduce in Eden. In: Sips, H., Epema, D., Lin, H.-X. (eds.) Euro-Par 2009. LNCS, vol. 5704, pp. 990–1002. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  7. Berthold, J., Dieterle, M., Loogen, R., Priebe, S.: Hierarchical Master-Worker Skeletons. In: Hudak, P., Warren, D.S. (eds.) PADL 2008. LNCS, vol. 4902, pp. 248–264. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  8. Berthold, J., Klusik, U., Loogen, R., Priebe, S., Weskamp, N.: High-Level Process Control in Eden. In: Kosch, H., Böszörményi, L., Hellwagner, H. (eds.) Euro-Par 2003. LNCS, vol. 2790, pp. 732–741. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  9. Berthold, J., Loogen, R.: Skeletons for Recursively Unfolding Process Topologies. In: Parallel Computing: Current & Future Issues of High-End Computing, ParCo 2005. NIC Series, vol. 33, pp. 835–842 (2006)

    Google Scholar 

  10. Berthold, J., Loogen, R.: Parallel Coordination Made Explicit in a Functional Setting. In: Horváth, Z., Zsók, V., Butterfield, A. (eds.) IFL 2006. LNCS, vol. 4449, pp. 73–90. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  11. Berthold, J., Loogen, R.: Visualizing Parallel Functional Program Runs – Case Studies with the Eden Trace Viewer. In: Parallel Computing: Architectures, Algorithms and Applications, ParCo 2007. NIC Series, vol. 38, pp. 121–128 (2007)

    Google Scholar 

  12. 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 

  13. Breitinger, S.: Design and Implementation of the Parallel Functional Language Eden. PhD thesis, Philipps-Universität of Marburg, Germany (1998)

    Google Scholar 

  14. Breitinger, S., Klusik, U., Loogen, R.: From (Sequential) Haskell to (Parallel) Eden: An Implementation Point of View. In: Palamidessi, C., Meinke, K., Glaser, H. (eds.) ALP 1998 and PLILP 1998. LNCS, vol. 1490, pp. 318–334. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  15. Bresenham, J.E.: Algorithm for computer control of a digital plotter. IBM Systems Journal 4(1), 25–30 (1965)

    Article  Google Scholar 

  16. Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press (1989)

    Google Scholar 

  17. de la Encina, A.: Formalizando el proceso de depuración en programación funcional paralela y perezosa. PhD thesis, Universidad Complutense de Madrid (Spain) (2008) (in Spanish)

    Google Scholar 

  18. Dean, J., Ghemawat, S.: MapReduce: Simplified Data Processing on Large Clusters. Communications of the ACM 51(1), 107–113 (2008)

    Article  Google Scholar 

  19. Dieterle, M., Berthold, J., Loogen, R.: A Skeleton for Distributed Work Pools in Eden. In: Blume, M., Kobayashi, N., Vidal, G. (eds.) FLOPS 2010. LNCS, vol. 6009, pp. 337–353. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  20. Dieterle, M., Horstmeyer, T., Loogen, R.: Skeleton Composition Using Remote Data. In: Carro, M., Peña, R. (eds.) PADL 2010. LNCS, vol. 5937, pp. 73–87. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  21. Encina, A., Llana, L., Rubio, F., Hidalgo-Herrero, M.: Observing Intermediate Structures in a Parallel Lazy Functional Language. In: Principles and Practice of Declarative Programming (PPDP 2007), pp. 109–120. ACM (2007)

    Google Scholar 

  22. Encina, A., Rodríguez, I., Rubio, F.: pHood: A Tool to Analyze Parallel Functional Programs. In: Implementation of Functional Languages (IFL 2009), pp. 85–99. Seton Hall University, New York (2009), Technical Report, SHU-TR-CS-2009-09-1

    Google Scholar 

  23. Gentleman, W.M.: Some complexity results for matrix computations on parallel computers. Journal of the ACM 25(1), 112–115 (1978)

    Article  MATH  Google Scholar 

  24. GHC: The Glasgow Haskell Compiler, http://www.haskell.org/ghc

  25. Hammond, K., Berthold, J., Loogen, R.: Automatic Skeletons in Template Haskell. Parallel Processing Letters 13(3), 413–424 (2003)

    Article  MathSciNet  Google Scholar 

  26. Haskell: A non-strict functional programming language, http://www.haskell.org/

  27. Hidalgo-Herrero, M.: Semánticas Formales para un Lenguaje Funcional Paralelo. PhD thesis, Universidad Complutense de Madrid (Spain) (2004) (in Spanish)

    Google Scholar 

  28. Hidalgo-Herrero, M., Ortega-Mallén, Y.: An Operational Semantics for the Parallel Language Eden. Parallel Processing Letters 12(2), 211–228 (2002)

    Article  Google Scholar 

  29. Hidalgo-Herrero, M., Ortega-Mallén, Y.: Continuation Semantics for Parallel Haskell Dialects. In: Ohori, A. (ed.) APLAS 2003. LNCS, vol. 2895, pp. 303–321. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  30. Hidalgo-Herrero, M., Ortega-Mallén, Y., Rubio, F.: Analyzing the Influence of Mixed Evaluation on the Performance of Eden Skeletons. Parallel Computing 32(7-8), 523–538 (2006)

    Article  Google Scholar 

  31. Hidalgo-Herrero, M., Ortega-Mallén, Y., Rubio, F.: Comparing Alternative Evaluation Strategies for Stream-Based Parallel Functional Languages. In: Horváth, Z., Zsók, V., Butterfield, A. (eds.) IFL 2006. LNCS, vol. 4449, pp. 55–72. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  32. Jeff Epstein, S.P., Black, A.P.: Towards Haskell in the cloud. In: Haskell 2011: Proceedings of the 4th ACM Symposium on Haskell, pp. 118–129. ACM (2011)

    Google Scholar 

  33. Klusik, U., Loogen, R., Priebe, S., Rubio, F.: Implementation Skeletons in Eden: Low-Effort Parallel Programming. In: Mohnen, M., Koopman, P. (eds.) IFL 2000. LNCS, vol. 2011, pp. 71–88. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  34. 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 

  35. Lobachev, O.: Implementation and Evaluation of Algorithmic Skeletons: Parallelisation of Computer Algebra Algorithms. PhD thesis, Philipps-Universität Marburg, Germany (2011)

    Google Scholar 

  36. Berthold, J., Dieterle, M., Lobachev, O., Loogen, R.: Parallel FFT with Eden Skeletons. In: Malyshkin, V. (ed.) PaCT 2009. LNCS, vol. 5698, pp. 73–83. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  37. Lobachev, O., Loogen, R.: Towards an Implementation of a Computer Algebra System in a Functional Language. In: Autexier, S., Campbell, J., Rubio, J., Sorge, V., Suzuki, M., Wiedijk, F. (eds.) AISC/Calculemus/MKM 2008. LNCS (LNAI), vol. 5144, pp. 141–154. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  38. Loogen, R., Ortega-Mallén, Y., Peña, R., Priebe, S., Rubio, F.: Parallelism Abstractions in Eden. In: [53], ch. 4, pp. 95–128. Springer (2003)

    Google Scholar 

  39. Loogen, R., Ortega-Mallén, Y., Peña-Marí, R.: Parallel Functional Programming in Eden. Journal of Functional Programming 15(3), 431–475 (2005)

    Article  MATH  Google Scholar 

  40. Maier, P., Trinder, P., Loidl, H.-W.: Implementing a High-level Distributed-Memory parallel Haskell in Haskell. In: IFL 2011: 23rd Int. Workshop on the Implementation of Functional Languages. LNCS, vol. 7257. Springer (2012) (to appear)

    Google Scholar 

  41. Marlow, S., Maier, P., Loidl, H.-W., Aswad, M.K., Trinder, P.W.: Seq no more: Better strategies for parallel Haskell. In: Haskell Symposium 2010. ACM Press (2010)

    Google Scholar 

  42. Marlow, S., Peyton-Jones, S.L., Singh, S.: Runtime support for multicore Haskell. In: ICFP 2009 — Intl. Conf. on Functional Programming, pp. 65–78. ACM Press (2009)

    Google Scholar 

  43. MPI: The Message-Passing Interface, http://www.open-mpi.org/

  44. Peña, R., Segura, C.: Non-determinism Analysis in a Parallel-Functional Language. In: Mohnen, M., Koopman, P. (eds.) IFL 2000. LNCS, vol. 2011, pp. 1–18. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  45. Peyton Jones, S., Gordon, A., Finne, S.: Concurrent Haskell. In: Proceedings of POPL 1996, pp. 295–308. ACM Press (1996)

    Google Scholar 

  46. Peyton Jones, S., Leshchinskiy, R., Keller, G., Chakravarty, M.: Harnessing the Multicores: Nested Data Parallelism in Haskell. In: Foundations of Software Technology and Theoretical Computer Science, FSTTCS 2008 (2008)

    Google Scholar 

  47. Peyton Jones, S.L.: Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine. Journal of Functional Programming 2(2), 127–202 (1992)

    Article  MATH  Google Scholar 

  48. Pickenbrock, B.: Developing a Multicore Implementation of Eden. Bachelor thesis, Philipps-Universität Marburg (2011) (in German)

    Google Scholar 

  49. Pope, B., Astapov, D.: Haskell-mpi, Haskell bindings to the MPI library (2010), https://github.com/bjpop/haskell-mpi

  50. Priebe, S.: Dynamic Task Generation and Transformation Within a Nestable Workpool Skeleton. In: Nagel, W.E., Walter, W.V., Lehner, W. (eds.) Euro-Par 2006. LNCS, vol. 4128, pp. 615–624. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  51. Priebe, S.: Structured Generic Programming in Eden. PhD thesis, Philipps-Universität Marburg, Germany (2007)

    Google Scholar 

  52. PVM: Parallel Virtual Machine, http://www.epm.ornl.gov/pvm/

  53. Rabhi, F.A., Gorlatch, S. (eds.): Patterns and Skeletons for Parallel and Distributed Computing. Springer (2003)

    Google Scholar 

  54. Rubio, F.: Programación Funcional Paralela Eficiente en Eden. PhD thesis, Universidad Complutense de Madrid, Spain (2001) (in Spanish)

    Google Scholar 

  55. Segura, C.: Análisis de programas en lenguajes funcionales paralelos. PhD thesis, Universidad Complutense de Madrid, Spain (2001) (in Spanish)

    Google Scholar 

  56. Simon Marlow, S.P., Newton, R.: A monad for deterministic parallelism. In: Haskell 2011: Proceedings of the 4th ACM Symposium on Haskell, pp. 71–82. ACM (2011)

    Google Scholar 

  57. Trinder, P., Hammond, K., Loidl, H.-W., Peyton Jones, S.: Algorithm + Strategy = Parallelism. Journal of Functional Programming 8(1), 23–60 (1998)

    Article  MathSciNet  MATH  Google Scholar 

  58. Trinder, P.W., Hammond, K., Mattson Jr., J.S., Partridge, A.S., Peyton Jones, S.L.: GUM: a portable implementation of Haskell. In: Proceedings of Programming Language Design and Implementation (1996)

    Google Scholar 

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 chapter

Cite this chapter

Loogen, R. (2012). Eden – Parallel Functional Programming with Haskell. In: Zsók, V., Horváth, Z., Plasmeijer, R. (eds) Central European Functional Programming School. CEFP 2011. Lecture Notes in Computer Science, vol 7241. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-32096-5_4

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-32096-5_4

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-32095-8

  • Online ISBN: 978-3-642-32096-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics