{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T23:05:50Z","timestamp":1779836750579,"version":"3.53.1"},"reference-count":60,"publisher":"Cambridge University Press (CUP)","license":[{"start":{"date-parts":[[2016,7,13]],"date-time":"2016-07-13T00:00:00Z","timestamp":1468368000000},"content-version":"unspecified","delay-in-days":194,"URL":"https:\/\/www.cambridge.org\/core\/terms"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["J. Funct. Prog."],"published-print":{"date-parts":[[2016]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>\n                    Over time, several competing approaches to parallel Haskell programming have emerged. Different approaches support parallelism at various different scales, ranging from small multicores to massively parallel high-performance computing systems. They also provide varying degrees of control, ranging from completely implicit approaches to ones providing full programmer control. Most current designs assume a shared memory model at the programmer, implementation and hardware levels. This is, however, becoming increasingly divorced from the reality at the hardware level. It also imposes significant unwanted runtime overheads in the form of garbage collection synchronisation etc. What is needed is an easy way to abstract over the implementation and hardware levels, while presenting a simple parallelism model to the programmer. The PArallEl shAred Nothing runtime system design aims to provide a portable and high-level\n                    <jats:italic>shared-nothing<\/jats:italic>\n                    implementation platform for parallel Haskell dialects. It abstracts over major issues such as work distribution and data serialisation, consolidating existing, successful designs into a single framework. It also provides an optional\n                    <jats:italic>virtual<\/jats:italic>\n                    shared-memory programming abstraction for (possibly) shared-nothing parallel machines, such as modern multicore\/manycore architectures or cluster\/cloud computing systems. It builds on, unifies and extends, existing well-developed support for shared-memory parallelism that is provided by the widely used GHC Haskell compiler. This paper summarises the state-of-the-art in shared-nothing parallel Haskell implementations, introduces the PArallEl shAred Nothing abstractions, shows how they can be used to implement three distinct parallel Haskell dialects, and demonstrates that good scalability can be obtained on recent parallel machines.\n                  <\/jats:p>","DOI":"10.1017\/s0956796816000010","type":"journal-article","created":{"date-parts":[[2016,7,13]],"date-time":"2016-07-13T05:54:13Z","timestamp":1468389253000},"source":"Crossref","is-referenced-by-count":2,"title":["PAEAN: Portable and scalable runtime support for parallel Haskell dialects"],"prefix":"10.1017","volume":"26","author":[{"given":"JOST","family":"BERTHOLD","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"HANS-WOLFGANG","family":"LOIDL","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"KEVIN","family":"HAMMOND","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"56","published-online":{"date-parts":[[2016,7,13]]},"reference":[{"key":"S0956796816000010_ref19","doi-asserted-by":"crossref","unstructured":"Breitinger S. , Klusik U. & Loogen R. (1998) From (Sequential) Haskell to (Parallel) Eden: An implementation point of view. In Proceedings of the 10th International Symposium on Principles of Declarative Programming, LNCS, vol. 1490. Springer, Berlin\/Heidelberg, pp. 318\u2013334.","DOI":"10.1007\/BFb0056623"},{"key":"S0956796816000010_ref54","first-page":"98","volume-title":"Intl. Conf. on Functional Programming Languages and Computer Architecture (FPCA'87)","author":"Peyton","year":"1987"},{"key":"S0956796816000010_ref29","doi-asserted-by":"publisher","DOI":"10.1145\/2364527.2364562"},{"key":"S0956796816000010_ref38","doi-asserted-by":"publisher","DOI":"10.1145\/2508834.2513149"},{"key":"S0956796816000010_ref27","doi-asserted-by":"publisher","DOI":"10.1145\/1248648.1248656"},{"key":"S0956796816000010_ref60","volume-title":"IFL'95: 7th International Workshop on the Implementation of Functional Languages","author":"Trinder","year":"1995"},{"key":"S0956796816000010_ref5","unstructured":"Aljabri M. , Trinder P. & Loidl H.-W. (2012 August) The design of a GUMSMP: A multilevel parallel Haskell implementation. In Proceedings of IFL'12: 24th Symposium on Implementation and Application of Functional Languages. Oxford, UK (draft proceedings), pp. 75\u201390."},{"key":"S0956796816000010_ref55","doi-asserted-by":"publisher","DOI":"10.1145\/1596550.1596588"},{"key":"S0956796816000010_ref22","volume-title":"Algorithmic Skeletons: Structured Management of Parallel Computation","author":"Cole","year":"1989"},{"key":"S0956796816000010_ref36","first-page":"73","volume-title":"IFL'92: International. Workshop on the Parallel Implementation of Functional Languages","author":"Hammond","year":"1992"},{"key":"S0956796816000010_ref50","doi-asserted-by":"crossref","unstructured":"Marlow S. , Maier P. , Loidl H.-W. , Aswad M. K. & Trinder P. (2010) Seq no More: Better Strategies for Parallel Haskell. In Proceedings of the Third ACM Haskell Symposium (Haskell'10). ACM, New York, pp. 91\u2013102.","DOI":"10.1145\/1863523.1863535"},{"key":"S0956796816000010_ref18","first-page":"250","volume-title":"IFL'97: 9th International Workshop on the Implementation of Functional Languages","author":"Breitinger","year":"1997"},{"key":"S0956796816000010_ref57","first-page":"247","volume-title":"TFP12: International Symposium on Trends in Functional Programming","author":"Stewart","year":"2012"},{"key":"S0956796816000010_ref15","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-45209-6_102"},{"key":"S0956796816000010_ref32","doi-asserted-by":"publisher","DOI":"10.1145\/1086365.1086380"},{"key":"S0956796816000010_ref7","unstructured":"Aljabri M. , Loidl H.-W. & Trinder P. (2014) Balancing shared and distributed heaps on NUMA architectures. In Proceedings of TFP'14: Symposium on Trends in Functional Programming. LNCS 8843. Springer, Berlin\/Heidelberg, pp. 1\u201317."},{"key":"S0956796816000010_ref9","first-page":"171","article-title":"Simple generational garbage collection and fast allocation","volume":"19","author":"Appel","year":"1989","journal-title":"Software: Pract. Exp."},{"key":"S0956796816000010_ref20","doi-asserted-by":"publisher","DOI":"10.1145\/213978.213986"},{"key":"S0956796816000010_ref47","doi-asserted-by":"crossref","unstructured":"Maier P. , Stewart R. & Trinder P. (2014b) The HdpH DSLs for scalable reliable computation. In Proceedings of the 2014 ACM SIGPLAN Symposium on Haskell (Haskell'14). ACM, New York, pp. 65\u201376.","DOI":"10.1145\/2633357.2633363"},{"key":"S0956796816000010_ref45","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-34407-7_3"},{"key":"S0956796816000010_ref13","unstructured":"Berthold J. & Loogen R. (2005) Skeletons for recursively unfolding process topologies. In Proceedings of ParCo 2005, Joubert G. R. , Nagel W. E. , Peters F. J. , Plata O. G. , Tirado P. & Zapata E. L. (eds), John von Neumann Institute of Computing Series, vol. 33. Central Institute for Applied Mathematics, J\u00fclich, Germany, pp. 835\u2013843."},{"key":"S0956796816000010_ref44","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796805005526"},{"key":"S0956796816000010_ref52","doi-asserted-by":"publisher","DOI":"10.1109\/71.86103"},{"key":"S0956796816000010_ref1","unstructured":"Acar U. A. , Chargu\u00e9raud A. & Rainey M. (2012 January) Efficient primitives for creating and scheduling parallel computations. In Workshop contribution for DAMP'12. Available at http:\/\/chargueraud.org\/research\/2012\/damp\/damp2012_primitives.pdf. [Retrieved 14\/12\/2015]"},{"key":"S0956796816000010_ref59","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796897002967"},{"key":"S0956796816000010_ref2","first-page":"219","volume-title":"ACM SIGPLAN Notices","author":"Acar","year":"2013"},{"key":"S0956796816000010_ref11","unstructured":"Berthold J. (2008 June) Explicit and Implicit Parallel Functional Programming: Concepts and Implementation. PhD Thesis, Philipps-Universit\u00e4t Marburg, Germany."},{"key":"S0956796816000010_ref43","first-page":"184","volume-title":"IFL'96: International Workshop on the Implementation of Functional Languages","author":"Loidl","year":"1996"},{"key":"S0956796816000010_ref8","unstructured":"Aljabri M. S. (2015 October) GUMSMP: A Scalable Parallel Haskell Implementation. Ph.D. thesis, School of Computing Science, University of Glasgow."},{"key":"S0956796816000010_ref26","doi-asserted-by":"crossref","unstructured":"Epstein J. , Black A. P. & Peyton-Jones S. (2011) Towards Haskell in the cloud. In Proceedings of the 4th ACM Symposium on Haskell (Haskell'11). ACM, New York, pp. 118\u2013129.","DOI":"10.1145\/2034675.2034690"},{"key":"S0956796816000010_ref12","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-24276-2_3"},{"key":"S0956796816000010_ref41","first-page":"63","volume-title":"SFP'01 \u2014 Scottish Functional Programming Workshop","author":"Loidl","year":"2001"},{"key":"S0956796816000010_ref35","first-page":"51","volume-title":"IFL'90: International Workshop on the Parallel Implementation of Functional Languages","author":"Hammond","year":"1990"},{"key":"S0956796816000010_ref49","doi-asserted-by":"publisher","DOI":"10.1145\/1596550.1596563"},{"key":"S0956796816000010_ref24","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-41582-1_2"},{"key":"S0956796816000010_ref31","unstructured":"Gray J. (1985) Why Do Computers Stop and What Can Be Done About It? Tandem Computers, Technical Report 85.7."},{"key":"S0956796816000010_ref14","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-74130-5_5"},{"key":"S0956796816000010_ref3","unstructured":"Aditya S. , Arvind Augustsson L. , Maessen J.-W. & Nikhil R. S. (1995) Semantics of pH: A parallel dialect of Haskell. In Proceedings of the Haskell Workshop, Hudak P. (ed), La Jolla, USA, pp. 35\u201349."},{"key":"S0956796816000010_ref4","doi-asserted-by":"publisher","DOI":"10.1109\/TPDS.2007.70728"},{"key":"S0956796816000010_ref51","doi-asserted-by":"crossref","unstructured":"Marlow S. , Newton R. & Peyton Jones S. (2011) A monad for deterministic parallelism. In Proceedings of the 4th ACM Haskell Symposium (Haskell'11). ACM, New York, pp. 71\u201382.","DOI":"10.1145\/2034675.2034685"},{"key":"S0956796816000010_ref46","first-page":"415","volume-title":"EuroPar'14: Parallel Processing","author":"Maier","year":"2014"},{"key":"S0956796816000010_ref25","first-page":"199","volume-title":"IFL'02: International Workshop on the Implementation of Functional Languages","author":"Du Bois","year":"2002"},{"key":"S0956796816000010_ref39","doi-asserted-by":"publisher","DOI":"10.1145\/1291201.1291217"},{"key":"S0956796816000010_ref33","volume-title":"IFL'93: International Workshop on the Parallel Implementation of Functional Languages","author":"Hammond","year":"1993"},{"key":"S0956796816000010_ref30","first-page":"1647","volume-title":"Encyclopedia of Parallel Computing","author":"Geist","year":"2011"},{"key":"S0956796816000010_ref17","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-17945-3_10"},{"key":"S0956796816000010_ref34","first-page":"768","volume-title":"Encyclopedia of Parallel Computing","author":"Hammond","year":"2011"},{"key":"S0956796816000010_ref6","doi-asserted-by":"crossref","unstructured":"Aljabri M. , Loidl H.-W. & Trinder P. W. (2013) The design and implementation of GUMSMP: A multilevel parallel Haskell implementation. In Proceedings of ACM SIGPLAN Symposium on Implementation and Application of Functional Languages (IFL'13). ACM, New York, pp. 37\u201348.","DOI":"10.1145\/2620678.2620682"},{"key":"S0956796816000010_ref10","doi-asserted-by":"crossref","unstructured":"Aswad M. K. (2012 April) Architecture Aware Parallel Programming in Glasgow Parallel Haskell. Ph.D. thesis, School of Mathematical and Computer Sciences, Heriot-Watt University.","DOI":"10.1016\/j.procs.2012.04.199"},{"key":"S0956796816000010_ref56","volume-title":"Composable Scheduler Activations for Haskell","author":"Sivaramakrishnan","year":"2013"},{"key":"S0956796816000010_ref42","volume-title":"IFL'94: International Workshop on the Implementation of Functional Languages","author":"Loidl","year":"1994"},{"key":"S0956796816000010_ref23","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-11503-5_8"},{"key":"S0956796816000010_ref37","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-48515-5_7"},{"key":"S0956796816000010_ref48","unstructured":"Marlow S. & Peyton Jones S. (2011) Multicore garbage collection with local heaps. In ISMM '11: Proceedings of the 10th International Symposium on Memory Management. ACM, New York, pp. 21\u201332."},{"key":"S0956796816000010_ref53","unstructured":"MPI Forum (ed). (2012) MPI: A Message-Passing Interface Standard, Version 3.0. High Performance Computing Center Stuttgart (HLRS). Available at: http:\/\/www.mpi-forum.org\/docs\/. [Retrieved 14\/12\/2015]"},{"key":"S0956796816000010_ref40","unstructured":"Loidl H.-W. (1998 (March) Granularity in Large-Scale Parallel Functional Programming. PhD Thesis, Dept. of Computing Science, Univ. of Glasgow."},{"key":"S0956796816000010_ref16","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-77442-6_15"},{"key":"S0956796816000010_ref58","doi-asserted-by":"publisher","DOI":"10.1002\/cpe.3087"},{"key":"S0956796816000010_ref28","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796810000201"},{"key":"S0956796816000010_ref21","first-page":"10","volume-title":"DAMP'07, Workshop on Declarative Aspects of Multicore Programming","author":"Chakravarty","year":"2007"}],"container-title":["Journal of Functional Programming"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.cambridge.org\/core\/services\/aop-cambridge-core\/content\/view\/S0956796816000010","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,5,26]],"date-time":"2026-05-26T22:36:38Z","timestamp":1779834998000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.cambridge.org\/core\/product\/identifier\/S0956796816000010\/type\/journal_article"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2016]]},"references-count":60,"alternative-id":["S0956796816000010"],"URL":"https:\/\/doi.org\/10.1017\/s0956796816000010","relation":{},"ISSN":["0956-7968","1469-7653"],"issn-type":[{"value":"0956-7968","type":"print"},{"value":"1469-7653","type":"electronic"}],"subject":[],"published":{"date-parts":[[2016]]},"article-number":"e10"}}