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
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
Alt, M., Gorlatch, S.: Adapting Java RMI for grid computing. Future Generation Computer Systems 21(5), 699–707 (2004)
Batcher, K.E.: Sorting networks and their applications. In: Proc. AFIPS Spring Joint Computer Conference, vol. 32, pp. 307–314 (1968)
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
Berthold, J.: Explicit and Implicit Parallel Functional Programming: Concepts and Implementation. PhD thesis, Philipps-Universität Marburg, Germany (2008)
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)
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)
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)
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)
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)
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)
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)
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)
Breitinger, S.: Design and Implementation of the Parallel Functional Language Eden. PhD thesis, Philipps-Universität of Marburg, Germany (1998)
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)
Bresenham, J.E.: Algorithm for computer control of a digital plotter. IBM Systems Journal 4(1), 25–30 (1965)
Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press (1989)
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)
Dean, J., Ghemawat, S.: MapReduce: Simplified Data Processing on Large Clusters. Communications of the ACM 51(1), 107–113 (2008)
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)
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)
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)
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
Gentleman, W.M.: Some complexity results for matrix computations on parallel computers. Journal of the ACM 25(1), 112–115 (1978)
GHC: The Glasgow Haskell Compiler, http://www.haskell.org/ghc
Hammond, K., Berthold, J., Loogen, R.: Automatic Skeletons in Template Haskell. Parallel Processing Letters 13(3), 413–424 (2003)
Haskell: A non-strict functional programming language, http://www.haskell.org/
Hidalgo-Herrero, M.: Semánticas Formales para un Lenguaje Funcional Paralelo. PhD thesis, Universidad Complutense de Madrid (Spain) (2004) (in Spanish)
Hidalgo-Herrero, M., Ortega-Mallén, Y.: An Operational Semantics for the Parallel Language Eden. Parallel Processing Letters 12(2), 211–228 (2002)
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)
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)
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)
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)
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)
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)
Lobachev, O.: Implementation and Evaluation of Algorithmic Skeletons: Parallelisation of Computer Algebra Algorithms. PhD thesis, Philipps-Universität Marburg, Germany (2011)
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)
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)
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)
Loogen, R., Ortega-Mallén, Y., Peña-Marí, R.: Parallel Functional Programming in Eden. Journal of Functional Programming 15(3), 431–475 (2005)
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)
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)
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)
MPI: The Message-Passing Interface, http://www.open-mpi.org/
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)
Peyton Jones, S., Gordon, A., Finne, S.: Concurrent Haskell. In: Proceedings of POPL 1996, pp. 295–308. ACM Press (1996)
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)
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)
Pickenbrock, B.: Developing a Multicore Implementation of Eden. Bachelor thesis, Philipps-Universität Marburg (2011) (in German)
Pope, B., Astapov, D.: Haskell-mpi, Haskell bindings to the MPI library (2010), https://github.com/bjpop/haskell-mpi
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)
Priebe, S.: Structured Generic Programming in Eden. PhD thesis, Philipps-Universität Marburg, Germany (2007)
PVM: Parallel Virtual Machine, http://www.epm.ornl.gov/pvm/
Rabhi, F.A., Gorlatch, S. (eds.): Patterns and Skeletons for Parallel and Distributed Computing. Springer (2003)
Rubio, F.: Programación Funcional Paralela Eficiente en Eden. PhD thesis, Universidad Complutense de Madrid, Spain (2001) (in Spanish)
Segura, C.: Análisis de programas en lenguajes funcionales paralelos. PhD thesis, Universidad Complutense de Madrid, Spain (2001) (in Spanish)
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)
Trinder, P., Hammond, K., Loidl, H.-W., Peyton Jones, S.: Algorithm + Strategy = Parallelism. Journal of Functional Programming 8(1), 23–60 (1998)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)