Efficient Parallel Functional Programming with Effects

Although functional programming languages simplify writing safe parallel programs by helping programmers to avoid data races, they have traditionally delivered poor performance. Recent work improved performance by using a hierarchical memory architecture that allows processors to allocate and reclai...

Full description

Saved in:
Bibliographic Details
Published in:Proceedings of ACM on programming languages Vol. 7; no. PLDI; pp. 1558 - 1583
Main Authors: Arora, Jatin, Westrick, Sam, Acar, Umut A.
Format: Journal Article
Language:English
Published: New York, NY, USA ACM 06.06.2023
Subjects:
ISSN:2475-1421, 2475-1421
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Abstract Although functional programming languages simplify writing safe parallel programs by helping programmers to avoid data races, they have traditionally delivered poor performance. Recent work improved performance by using a hierarchical memory architecture that allows processors to allocate and reclaim memory independently without any synchronization, solving thus the key performance challenge afflicting functional programs. The approach, however, restricts mutation, or memory effects, so as to ensure "disentanglement", a low-level memory property that guarantees independence between different heaps in the hierarchy. This paper proposes techniques for supporting entanglement and for allowing functional programs to use mutation at will. Our techniques manage entanglement by distinguishing between disentangled and entangled objects and shielding disentangled objects from the cost of entanglement management. We present a semantics that formalizes entanglement as a property at the granularity of memory objects, and define several cost metrics to reason about and bound the time and space cost of entanglement. We present an implementation of the techniques by extending the MPL compiler for Parallel ML. The extended compiler supports all features of the Parallel ML language, including unrestricted effects. Our experiments using a variety of benchmarks show that MPL incurs a small time and space overhead compared to sequential runs, scales well, and is competitive with languages such as C++, Go, Java, OCaml. These results show that our techniques can marry the safety benefits of functional programming with performance.
AbstractList Although functional programming languages simplify writing safe parallel programs by helping programmers to avoid data races, they have traditionally delivered poor performance. Recent work improved performance by using a hierarchical memory architecture that allows processors to allocate and reclaim memory independently without any synchronization, solving thus the key performance challenge afflicting functional programs. The approach, however, restricts mutation, or memory effects, so as to ensure "disentanglement", a low-level memory property that guarantees independence between different heaps in the hierarchy. This paper proposes techniques for supporting entanglement and for allowing functional programs to use mutation at will. Our techniques manage entanglement by distinguishing between disentangled and entangled objects and shielding disentangled objects from the cost of entanglement management. We present a semantics that formalizes entanglement as a property at the granularity of memory objects, and define several cost metrics to reason about and bound the time and space cost of entanglement. We present an implementation of the techniques by extending the MPL compiler for Parallel ML. The extended compiler supports all features of the Parallel ML language, including unrestricted effects. Our experiments using a variety of benchmarks show that MPL incurs a small time and space overhead compared to sequential runs, scales well, and is competitive with languages such as C++, Go, Java, OCaml. These results show that our techniques can marry the safety benefits of functional programming with performance.
Although functional programming languages simplify writing safe parallel programs by helping programmers to avoid data races, they have traditionally delivered poor performance. Recent work improved performance by using a hierarchical memory architecture that allows processors to allocate and reclaim memory independently without any synchronization, solving thus the key performance challenge afflicting functional programs. The approach, however, restricts mutation, or memory effects, so as to ensure "disentanglement", a low-level memory property that guarantees independence between different heaps in the hierarchy. This paper proposes techniques for supporting entanglement and for allowing functional programs to use mutation at will. Our techniques manage entanglement by distinguishing between disentangled and entangled objects and shielding disentangled objects from the cost of entanglement management. We present a semantics that formalizes entanglement as a property at the granularity of memory objects, and define several cost metrics to reason about and bound the time and space cost of entanglement. We present an implementation of the techniques by extending the MPL compiler for Parallel ML. The extended compiler supports all features of the Parallel ML language, including unrestricted effects. Our experiments using a variety of benchmarks show that MPL incurs a small time and space overhead compared to sequential runs, scales well, and is competitive with languages such as C++, Go, Java, OCaml. These results show that our techniques can marry the safety benefits of functional programming with performance.
ArticleNumber 170
Author Westrick, Sam
Arora, Jatin
Acar, Umut A.
Author_xml – sequence: 1
  givenname: Jatin
  orcidid: 0000-0001-8302-6844
  surname: Arora
  fullname: Arora, Jatin
  email: jatina@andrew.cmu.edu
  organization: Carnegie Mellon University, USA
– sequence: 2
  givenname: Sam
  orcidid: 0000-0003-2848-9808
  surname: Westrick
  fullname: Westrick, Sam
  email: swestric@cs.cmu.edu
  organization: Carnegie Mellon University, USA
– sequence: 3
  givenname: Umut A.
  orcidid: 0000-0002-2623-4986
  surname: Acar
  fullname: Acar, Umut A.
  email: umut@cmu.edu
  organization: Carnegie Mellon University, USA
BookMark eNptj8FLwzAYxYNMcM7h3VNvnqr5krRpjjK2KQzcYffy7WsyI2kraUT8793YFBFP78H78eB3yUZd31nGroHfAajiXhYGRKXO2FgoXeSgBIx-9Qs2HYZXzjkYqSppxqycO-fJ2y5la4wYgg3Z4r2j5PsOQ7aO_S5i2_pul3349JLtcUtpuGLnDsNgp6ecsM1ivpk95qvn5dPsYZWj0DrlVjilUUDZWCShRCmh4UY3AIaUK7TiRFtTNFYTVYXVxsG20qYRKCsUlZyw2-MtxX4YonX1W_Qtxs8aeH0Qrk_CezL_Q5JPeLBIEX34h7858kjtz-n3-AVRSl_U
CitedBy_id crossref_primary_10_1145_3632880
crossref_primary_10_1145_3729285
crossref_primary_10_1145_3632853
crossref_primary_10_1145_3632895
Cites_doi 10.1145/209936.209958
10.26421/QIC6.1-6
10.1137/1.9781611976021.11
10.1145/1411204.1411239
10.1145/3350755.3400254
10.1145/3293883.3295735
10.1145/1094811.1094852
10.1017/S0956796816000101
10.1007/3-540-45414-4_21
10.1145/1248648.1248652
10.1145/2688500.2688501
10.1145/1583991.1584017
10.1145/800055.802017
10.1145/3178487.3178494
10.1145/3385412.3386013
10.1145/2627373.2627375
10.1090/gsm/047
10.1145/301970.301974
10.1109/SC.2012.71
10.1145/169627.169724
10.5555/1855591.1855595
10.1145/227234.227246
10.1145/3192366.3192391
10.1145/2612669.2612687
10.1145/2312005.2312018
10.1145/2951913.2951935
10.1109/PMMPC.1995.504336
10.1006/jpdc.1994.1038
10.1145/3236790
10.1145/1133956.1133963
10.1145/1993498.1993572
10.1145/248052.248106
10.1145/289918.289920
10.1145/337449.337465
10.1145/1640089.1640096
10.1145/1839676.1839697
10.1007/978-3-642-21338-0_17
10.1145/3243176.3243193
10.1145/69558.69562
10.1007/978-3-319-03850-6_15
10.1007/s00224-002-1057-3
10.1145/2767386.2767436
10.1002/(SICI)1096-9128(199809/11)10:11/13<825::AID-CPE383>3.0.CO;2-H
10.5555/300092.300094
10.1145/3428196
10.1145/3473596
10.5281/zenodo.7824069
10.1145/2951913.2951946
10.1145/3408995
10.1145/3062341.3062370
10.1145/1863543.1863582
10.1145/2784731.2784736
10.1145/3503221.3508422
10.1145/2647508.2647514
ContentType Journal Article
Copyright Owner/Author
Copyright_xml – notice: Owner/Author
DBID AAYXX
CITATION
DOI 10.1145/3591284
DatabaseName CrossRef
DatabaseTitle CrossRef
DatabaseTitleList
CrossRef
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 2475-1421
EndPage 1583
ExternalDocumentID 10_1145_3591284
3591284
GroupedDBID AAKMM
AAYFX
ACM
ADPZR
AIKLT
ALMA_UNASSIGNED_HOLDINGS
GUFHI
LHSKQ
M~E
OK1
ROL
AAYXX
AEFXT
AEJOY
AKRVB
CITATION
ID FETCH-LOGICAL-a277t-e2f47a216deac242631d097d119c4f5740ccb95de7cc85e79f1b879d2a38a283
ISICitedReferencesCount 6
ISICitedReferencesURI http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=001005701900066&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
ISSN 2475-1421
IngestDate Tue Nov 18 21:38:18 EST 2025
Sat Nov 29 07:48:32 EST 2025
Fri Feb 21 04:13:08 EST 2025
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Issue PLDI
Keywords concurrent
memory management
functional programming
parallel
Language English
License This work is licensed under a Creative Commons Attribution 4.0 International License.
LinkModel OpenURL
MergedId FETCHMERGED-LOGICAL-a277t-e2f47a216deac242631d097d119c4f5740ccb95de7cc85e79f1b879d2a38a283
ORCID 0000-0002-2623-4986
0000-0003-2848-9808
0000-0001-8302-6844
OpenAccessLink https://dl.acm.org/doi/10.1145/3591284
PageCount 26
ParticipantIDs crossref_primary_10_1145_3591284
crossref_citationtrail_10_1145_3591284
acm_primary_3591284
PublicationCentury 2000
PublicationDate 2023-06-06
PublicationDateYYYYMMDD 2023-06-06
PublicationDate_xml – month: 06
  year: 2023
  text: 2023-06-06
  day: 06
PublicationDecade 2020
PublicationPlace New York, NY, USA
PublicationPlace_xml – name: New York, NY, USA
PublicationTitle Proceedings of ACM on programming languages
PublicationTitleAbbrev ACM PACMPL
PublicationYear 2023
Publisher ACM
Publisher_xml – name: ACM
References Emery D. Berger, Ting Yang, Tongping Liu, and Gene Novark. 2009. Grace: Safe Multithreaded Programming for C/C++. In Proceedings of the 24th ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA ’09). Association for Computing Machinery, New York, NY, USA. 81–96. isbn:9781605587660 https://doi.org/10.1145/1640089.1640096 10.1145/1640089.1640096
Guy E. Blelloch, Jonathan C. Hardwick, Jay Sipelstein, Marco Zagha, and Siddhartha Chatterjee. 1994. Implementation of a Portable Nested Data-Parallel Language. J. Parallel Distrib. Comput., 21, 1 (1994), 4–14.
Maged M. Michael and Michael L. Scott. 1996. Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms. In Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing, Philadelphia, Pennsylvania, USA, May 23-26, 1996, James E. Burns and Yoram Moses (Eds.). ACM, 267–275. https://doi.org/10.1145/248052.248106 10.1145/248052.248106
Kyle Singer, Kunal Agrawal, and I-Ting Angelina Lee. 2020. Scheduling I/O Latency-Hiding Futures in Task-Parallel Platforms. In 1st Symposium on Algorithmic Principles of Computer Systems, APOCS 2020, Salt Lake City, UT, USA, January 8, 2020, Bruce M. Maggs (Ed.). SIAM, 147–161. https://doi.org/10.1137/1.9781611976021.11 10.1137/1.9781611976021.11
Stefan K. Muller and Umut A. Acar. 2016. Latency-Hiding Work Stealing: Scheduling Interacting Parallel Computations with Work Stealing. In Proceedings of the 28th ACM Symposium on Parallelism in Algorithms and Architectures, SPAA 2016, Asilomar State Beach/Pacific Grove, CA, USA, July 11-13, 2016. 71–82.
2015. Folly: Facebook Open-source Library. https://github.com/facebook/folly
Jatin Arora, Sam Westrick, and Umut A. Acar. 2023. Replication instructions for Article: Efficient Parallel Functional Programming with Effects. https://doi.org/10.5281/zenodo.7824069 10.5281/zenodo.7824069
Antony Hosking. 2006. Portable, Mostly-Concurrent, Mostly-Copying Garbage Collection for Multi-Processors. 2006, https://doi.org/10.1145/1133956.1133963 10.1145/1133956.1133963
Giuseppe Attardi, Tito Flagella, and Pietro Iglio. 1998. A Customisable Memory Management Framework for C++. Software Prac. Experience, 28, 11 (1998), Nov., 1143–1183. ftp://ftp.di.unipi.it/pub/Papers/attardi/SPE.ps.gz
Richard Jones, Antony Hosking, and Eliot Moss. 2012. The Garbage Collection Handbook : The Art of Automatic Memory Management. CRC Press.
2009. Intel(R) Threading Building Blocks. Available from http://www.threadingbuildingblocks.org/documentation.php
Keir Fraser. 2003. Practical lock-freedom.
2011. Finagle: A Protocol-Agnostic RPC System. https://twitter.github.io/finagle
Umut A. Acar, Guy E. Blelloch, and Robert D. Blumofe. 2002. The Data Locality of Work Stealing. Theory of Computing Systems, 35, 3 (2002), 321–347.
Manuel M. T. Chakravarty, Roman Leshchinskiy, Simon L. Peyton Jones, Gabriele Keller, and Simon Marlow. 2007. Data parallel Haskell: a status report. In Proceedings of the POPL 2007 Workshop on Declarative Aspects of Multicore Programming, DAMP 2007, Nice, France, January 16, 2007. 10–18.
Atsushi Ohori, Kenjiro Taura, and Katsuhiro Ueno. 2018. Making SML# a General-purpose High-performance Language. Unpublished Manuscript
Jatin Arora, Sam Westrick, and Umut A. Acar. 2021. Provably Space Efficient Parallel Functional Programming. In Proceedings of the 48th Annual ACM Symposium on Principles of Programming Languages (POPL)".
Robert D. Blumofe, Christopher F. Joerg, Bradley C. Kuszmaul, Charles E. Leiserson, Keith H. Randall, and Yuli Zhou. 1995. Cilk: An Efficient Multithreaded Runtime System. In Proceedings of the Fifth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. Santa Barbara, California. 207–216.
Bowen Alpern, Larry Carter, and Jeanne Ferrante. 1995. Space-limited procedures: A methodology for portable high-performance. In Programming Models for Massively Parallel Computers. 10–17.
Matthew Fluet, Mike Rainey, and John Reppy. 2008. A scheduling framework for general-purpose parallel languages. In ACM SIGPLAN International Conference on Functional Programming (ICFP).
Joel F. Bartlett. 1989. Mostly-Copying Garbage Collection picks up Generations and C++. DEC Western Research Laboratory, Palo Alto, CA. ftp://ftp.digital.com/pub/DEC/WRL/research-reports/WRL-TN-12.ps Sources available in ftp://ftp.digital.com/pub/DEC/CCgc
Doug Lea. 2000. A Java fork/join framework. In Proceedings of the ACM 2000 conference on Java Grande (JAVA ’00). 36–43.
Stefan K. Muller, Umut A. Acar, and Robert Harper. 2017. Responsive Parallel Computation: Bridging Competitive and Cooperative Threading. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2017). ACM, New York, NY, USA. 677–692. isbn:978-1-4503-4988-8
K. C. Sivaramakrishnan, Stephen Dolan, Leo White, Sadiq Jaffer, Tom Kelly, Anmol Sahoo, Sudha Parimala, Atul Dhiman, and Anil Madhavapeddy. 2020. Retrofitting parallelism onto OCaml. Proc. ACM Program. Lang., 4, ICFP (2020), 113:1–113:30.
K. C. Sivaramakrishnan, Lukasz Ziarek, and Suresh Jagannathan. 2014. MultiMLton: A multicore-aware runtime for standard ML. Journal of Functional Programming, FirstView (2014), 6, 1–62.
Timothy L. Harris. 2001. A Pragmatic Implementation of Non-blocking Linked-Lists. In Distributed Computing, 15th International Conference, DISC 2001, Lisbon, Portugal, October 3-5, 2001, Proceedings, Jennifer L. Welch (Ed.) (Lecture Notes in Computer Science, Vol. 2180). Springer, 300–314. https://doi.org/10.1007/3-540-45414-4_21 10.1007/3-540-45414-4_21
Jonatan Lindén and Bengt Jonsson. 2013. A Skiplist-Based Concurrent Priority Queue with Minimal Memory Contention. In Principles of Distributed Systems - 17th International Conference, OPODIS 2013, Nice, France, December 16-18, 2013. Proceedings, Roberto Baldoni, Nicolas Nisse, and Maarten van Steen (Eds.) (Lecture Notes in Computer Science, Vol. 8304). Springer, 206–220. https://doi.org/10.1007/978-3-319-03850-6_15 10.1007/978-3-319-03850-6_15
Robert L Bocchino, Jr., Vikram S. Adve, Sarita V. Adve, and Marc Snir. 2009. Parallel programming must be deterministic by default. In First USENIX Conference on Hot Topics in Parallelism.
A. Krishnamurthy, D. E. Culler, A. Dusseau, S. C. Goldstein, S. Lumetta, T. von Eicken, and K. Yelick. 1993. Parallel Programming in Split-C. In Proceedings of the 1993 ACM/IEEE Conference on Supercomputing (Supercomputing ’93). ACM, New York, NY, USA. 262–273. isbn:0-8186-4340-4 https://doi.org/10.1145/169627.169724 10.1145/169627.169724
Matthew Le and Matthew Fluet. 2015. Partial Aborts for Transactions via First-class Continuations. In Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming (ICFP 2015). 230–242. isbn:978-1-4503-3669-7
2009. Intel Cilk++ SDK Programmer’s Guide. Document Number: 322581-001US
Umut A. Acar, Arthur Charguéraud, and Mike Rainey. 2016. Oracle-guided scheduling for controlling granularity in implicitly parallel languages. Journal of Functional Programming (JFP), 26 (2016), e23.
Daniel Spoonhower. 2009. Scheduling Deterministic Parallel Programs. Ph. D. Dissertation. Carnegie Mellon University. https://www.cs.cmu.edu/~rwh/theses/spoonhower.pdf
Daniel Anderson, Guy E. Blelloch, Laxman Dhulipala, Magdalen Dobson, and Yihan Sun. 2022. The problem-based benchmark suite (PBBS), V2. In PPoPP ’22: 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, Seoul, Republic of Korea, April 2 - 6, 2022, Jaejin Lee, Kunal Agrawal, and Michael F. Spear (Eds.). ACM, 445–447. https://doi.org/10.1145/3503221.3508422 10.1145/3503221.3508422
Adrien Guatto, Sam Westrick, Ram Raghunathan, Umut A. Acar, and Matthew Fluet. 2018. Hierarchical memory management for mutable state. In Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2018, Vienna, Austria, February 24-28, 2018. 81–93.
Peng Li, Simon Marlow, Simon L. Peyton Jones, and Andrew P. Tolmach. 2007. Lightweight concurrency primitives for GHC. In Proceedings of the ACM SIGPLAN Workshop on Haskell, Haskell 2007, Freiburg, Germany, September 30, 2007. 107–118.
Yotam M. Y. Feldman, Artem Khyzha, Constantin Enea, Adam Morrison, Aleksandar Nanevski, Noam Rinetzky, and Sharon Shoham. 2020. Proving Highly-Concurrent Traversals Correct. Proc. ACM Program. Lang., 4, OOPSLA (2020), Article 128, nov, 29 pages. https://doi.org/10.1145/3428196 10.1145/3428196
Robert H. Halstead, Jr.. 1984. Implementation of Multilisp: Lisp on a Multiprocessor. In Proceedings of the 1984 ACM Symposium on LISP and functional programming (LFP ’84). ACM, 9–17.
Alexei Yu Kitaev, Alexander Shen, Mikhail N Vyalyi, and Mikhail N Vyalyi. 2002. Classical and quantum computation. American Mathematical Soc..
Julian Shun and Guy E. Blelloch. 2014. Phase-Concurrent Hash Tables for Determinism. In Proceedings of the 26th ACM Symposium on Parallelism in Algorithms and Architectures (SPAA ’14). Association for Computing Machinery, New York, NY, USA. 96–107. isbn:9781450328210 https://doi.org/10.1145/2612669.2612687 10.1145/2612669.2612687
Joel F. Bartlett. 1988. Compacting Garbage Collection with Ambiguous Roots. DEC Western Research Laboratory, Palo Alto, CA. http://www.research.digital.com/wrl/techreports/88.2.ps Also in Lisp Pointers 1, 6 (April–June 1988), 2–12
Stefan K. Muller, Umut A. Acar, and Robert Harper. 2018. Competitive Parallelism: Getting Your Priorities Right. Proc. ACM Program. Lang., 2, ICFP (2018), Article 95, July, 30 pages. issn:2475-1421
Simon L. Peyton Jones, Roman Leshchinskiy, Gabriele Keller, and Manuel M. T. Chakravarty. 2008. Harnessing the Multicores: Nested Data Parallelism in Haskell. In FSTTCS. 383–414.
Prakash Prabhu, Stephen R. Beard, Sotiris Apostolakis, Ayal Zaks, and David I. August. 2018. MemoDyn: Exploiting Weakly Consistent Data Structures for Dynamic Parallel Memoization. In Proceedings of the 27th International Conference on Parallel Architectures and
Jones Richard (e_1_2_1_49_1)
e_1_2_1_60_1
e_1_2_1_20_1
e_1_2_1_41_1
e_1_2_1_68_1
Arora Jatin (e_1_2_1_11_1)
e_1_2_1_24_1
e_1_2_1_45_1
e_1_2_1_62_1
e_1_2_1_83_1
e_1_2_1_22_1
e_1_2_1_43_1
e_1_2_1_64_1
Guy (e_1_2_1_23_1) 1999
e_1_2_1_26_1
e_1_2_1_47_1
Fluet Matthew (e_1_2_1_37_1) 2011; 20
Westrick Sam (e_1_2_1_80_1) 2022
Westrick Sam (e_1_2_1_81_1)
Auhagen Sven (e_1_2_1_16_1)
e_1_2_1_71_1
Spoonhower Daniel (e_1_2_1_79_1)
e_1_2_1_31_1
e_1_2_1_77_1
e_1_2_1_8_1
e_1_2_1_56_1
e_1_2_1_6_1
e_1_2_1_12_1
e_1_2_1_35_1
e_1_2_1_50_1
e_1_2_1_73_1
e_1_2_1_4_1
e_1_2_1_10_1
e_1_2_1_33_1
e_1_2_1_52_1
e_1_2_1_75_1
e_1_2_1_2_1
Peyton Jones Simon L. (e_1_2_1_69_1) 2008
e_1_2_1_39_1
e_1_2_1_58_1
Bartlett Joel F. (e_1_2_1_17_1) 1988
e_1_2_1_82_1
Li Peng (e_1_2_1_57_1) 2007
e_1_2_1_42_1
e_1_2_1_65_1
e_1_2_1_40_1
e_1_2_1_67_1
e_1_2_1_46_1
e_1_2_1_61_1
e_1_2_1_21_1
e_1_2_1_44_1
e_1_2_1_27_1
e_1_2_1_25_1
e_1_2_1_48_1
Bartlett Joel F. (e_1_2_1_18_1)
e_1_2_1_29_1
Sivaramakrishnan K. C. (e_1_2_1_78_1) 2014
Muller Stefan K. (e_1_2_1_66_1) 2018
Attardi Giuseppe (e_1_2_1_14_1) 1994
Kumar Ananya (e_1_2_1_54_1) 2017
Marlow Simon (e_1_2_1_59_1) 2011
Stefan (e_1_2_1_63_1) 2016
e_1_2_1_70_1
e_1_2_1_7_1
e_1_2_1_30_1
e_1_2_1_55_1
e_1_2_1_76_1
e_1_2_1_5_1
Boehm Hans-Juergen (e_1_2_1_28_1) 2011
e_1_2_1_13_1
e_1_2_1_34_1
e_1_2_1_51_1
e_1_2_1_72_1
e_1_2_1_1_1
e_1_2_1_32_1
e_1_2_1_53_1
e_1_2_1_74_1
e_1_2_1_38_1
e_1_2_1_15_1
e_1_2_1_36_1
e_1_2_1_9_1
Acar Umut A. (e_1_2_1_3_1) 2017
e_1_2_1_19_1
References_xml – reference: Alexander Collins, Dominik Grewe, Vinod Grover, Sean Lee, and Adriana Susnea. 2014. NOVA: A Functional Language for Data Parallelism. In Proceedings of ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming (ARRAY’14). Association for Computing Machinery, New York, NY, USA. 8–13. isbn:9781450329378 https://doi.org/10.1145/2627373.2627375 10.1145/2627373.2627375
– reference: Vincent Gramoli. 2015. More than You Ever Wanted to Know about Synchronization: Synchrobench, Measuring the Impact of the Synchronization on Concurrent Algorithms. In Proceedings of the 20th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 2015). Association for Computing Machinery, New York, NY, USA. 1–10. isbn:9781450332057 https://doi.org/10.1145/2688500.2688501 10.1145/2688500.2688501
– reference: Kyle Singer, Kunal Agrawal, and I-Ting Angelina Lee. 2020. Scheduling I/O Latency-Hiding Futures in Task-Parallel Platforms. In 1st Symposium on Algorithmic Principles of Computer Systems, APOCS 2020, Salt Lake City, UT, USA, January 8, 2020, Bruce M. Maggs (Ed.). SIAM, 147–161. https://doi.org/10.1137/1.9781611976021.11 10.1137/1.9781611976021.11
– reference: Jonatan Lindén and Bengt Jonsson. 2013. A Skiplist-Based Concurrent Priority Queue with Minimal Memory Contention. In Principles of Distributed Systems - 17th International Conference, OPODIS 2013, Nice, France, December 16-18, 2013. Proceedings, Roberto Baldoni, Nicolas Nisse, and Maarten van Steen (Eds.) (Lecture Notes in Computer Science, Vol. 8304). Springer, 206–220. https://doi.org/10.1007/978-3-319-03850-6_15 10.1007/978-3-319-03850-6_15
– reference: Lukasz Ziarek, K. C. Sivaramakrishnan, and Suresh Jagannathan. 2011. Composable asynchronous events. In Proceedings of the 32nd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2011, San Jose, CA, USA, June 4-8, 2011. 628–639.
– reference: Matthew Fluet, Mike Rainey, John Reppy, and Adam Shaw. 2011. Implicitly threaded parallelism in Manticore. Journal of Functional Programming, 20, 5-6 (2011), 1–40.
– reference: 2009. Intel(R) Threading Building Blocks. Available from http://www.threadingbuildingblocks.org/documentation.php
– reference: Umut A. Acar, Guy E. Blelloch, and Robert D. Blumofe. 2002. The Data Locality of Work Stealing. Theory of Computing Systems, 35, 3 (2002), 321–347.
– reference: Gabriele Keller, Manuel M.T. Chakravarty, Roman Leshchinskiy, Simon Peyton Jones, and Ben Lippmeier. 2010. Regular, shape-polymorphic, parallel arrays in Haskell. In Proceedings of the 15th ACM SIGPLAN international conference on Functional programming (ICFP ’10). 261–272.
– reference: Maged M. Michael and Michael L. Scott. 1996. Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue Algorithms. In Proceedings of the Fifteenth Annual ACM Symposium on Principles of Distributed Computing, Philadelphia, Pennsylvania, USA, May 23-26, 1996, James E. Burns and Yoram Moses (Eds.). ACM, 267–275. https://doi.org/10.1145/248052.248106 10.1145/248052.248106
– reference: Ram Raghunathan, Stefan K. Muller, Umut A. Acar, and Guy Blelloch. 2016. Hierarchical Memory Management for Parallel Programs. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming (ICFP 2016). ACM, New York, NY, USA. 392–406.
– reference: Joel F. Bartlett. 1988. Compacting Garbage Collection with Ambiguous Roots. DEC Western Research Laboratory, Palo Alto, CA. http://www.research.digital.com/wrl/techreports/88.2.ps Also in Lisp Pointers 1, 6 (April–June 1988), 2–12
– reference: Alexei Yu Kitaev, Alexander Shen, Mikhail N Vyalyi, and Mikhail N Vyalyi. 2002. Classical and quantum computation. American Mathematical Soc..
– reference: Shams Mahmood Imam and Vivek Sarkar. 2014. Habanero-Java library: a Java 8 framework for multicore programming. In 2014 International Conference on Principles and Practices of Programming on the Java Platform Virtual Machines, Languages and Tools, PPPJ ’14. 75–86.
– reference: Bowen Alpern, Larry Carter, and Jeanne Ferrante. 1995. Space-limited procedures: A methodology for portable high-performance. In Programming Models for Massively Parallel Computers. 10–17.
– reference: Adrien Guatto, Sam Westrick, Ram Raghunathan, Umut A. Acar, and Matthew Fluet. 2018. Hierarchical memory management for mutable state. In Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP 2018, Vienna, Austria, February 24-28, 2018. 81–93.
– reference: Julian Shun and Guy E. Blelloch. 2014. Phase-Concurrent Hash Tables for Determinism. In Proceedings of the 26th ACM Symposium on Parallelism in Algorithms and Architectures (SPAA ’14). Association for Computing Machinery, New York, NY, USA. 96–107. isbn:9781450328210 https://doi.org/10.1145/2612669.2612687 10.1145/2612669.2612687
– reference: Matthew Le and Matthew Fluet. 2015. Partial Aborts for Transactions via First-class Continuations. In Proceedings of the 20th ACM SIGPLAN International Conference on Functional Programming (ICFP 2015). 230–242. isbn:978-1-4503-3669-7
– reference: Umut A. Acar, Arthur Charguéraud, and Mike Rainey. 2016. Oracle-guided scheduling for controlling granularity in implicitly parallel languages. Journal of Functional Programming (JFP), 26 (2016), e23.
– reference: Joel F. Bartlett. 1989. Mostly-Copying Garbage Collection picks up Generations and C++. DEC Western Research Laboratory, Palo Alto, CA. ftp://ftp.digital.com/pub/DEC/WRL/research-reports/WRL-TN-12.ps Sources available in ftp://ftp.digital.com/pub/DEC/CCgc
– reference: Antony Hosking. 2006. Portable, Mostly-Concurrent, Mostly-Copying Garbage Collection for Multi-Processors. 2006, https://doi.org/10.1145/1133956.1133963 10.1145/1133956.1133963
– reference: Philippe Charles, Christian Grothoff, Vijay Saraswat, Christopher Donawa, Allan Kielstra, Kemal Ebcioglu, Christoph von Praun, and Vivek Sarkar. 2005. X10: an object-oriented approach to non-uniform cluster computing. In Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA ’05). ACM, 519–538.
– reference: Stefan K. Muller, Umut A. Acar, and Robert Harper. 2018. Types and Cost Models for Responsive Parallelism. In Proceedings of the 14th ACM SIGPLAN International Conference on Functional Programming (ICFP ’18).
– reference: Stefan Muller, Kyle Singer, Noah Goldstein, Umut A. Acar, Kunal Agrawal, and I-Ting Angelina Lee. 2020. Responsive Parallelism with Futures and State. In Proceedings of the ACM Conference on Programming Language Design and Implementation (PLDI).
– reference: Giuseppe Attardi and Tito Flagella. 1994. A Customisable Memory Management Framework. International Computer Science Institute, Berkeley. ftp://ftp.icsi.berkeley.edu:/pub/techreports/1994/tr-94-010.ps.Z Also Proceedings of the USENIX C++ Conference, Cambridge, MA, 1994
– reference: M. Bauer, S. Treichler, E. Slaughter, and A. Aiken. 2012. Legion: Expressing locality and independence with logical regions. In SC ’12: Proceedings of the International Conference on High Performance Computing, Networking, Storage and Analysis. 1–11. issn:2167-4337 https://doi.org/10.1109/SC.2012.71 10.1109/SC.2012.71
– reference: Hans-Juergen Boehm. 2011. How to Miscompile Programs with "Benign" Data Races. In 3rd USENIX Workshop on Hot Topics in Parallelism, HotPar’11, Berkeley, CA, USA, May 26-27, 2011.
– reference: Keir Fraser. 2003. Practical lock-freedom.
– reference: Umut A. Acar, Arthur Charguéraud, Mike Rainey, and Filip Sieczkowski. 2016. Dag-calculus: A Calculus for Parallel Computation. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming (ICFP 2016). 18–32.
– reference: Yotam M. Y. Feldman, Artem Khyzha, Constantin Enea, Adam Morrison, Aleksandar Nanevski, Noam Rinetzky, and Sharon Shoham. 2020. Proving Highly-Concurrent Traversals Correct. Proc. ACM Program. Lang., 4, OOPSLA (2020), Article 128, nov, 29 pages. https://doi.org/10.1145/3428196 10.1145/3428196
– reference: Christopher M. Dawson and Michael A. Nielsen. 2006. The Solovay-Kitaev algorithm. Quantum Inf. Comput., 6, 1 (2006), 81–95. https://doi.org/10.26421/QIC6.1-6 10.26421/QIC6.1-6
– reference: Matteo Frigo, Pablo Halpern, Charles E. Leiserson, and Stephen Lewin-Berlin. 2009. Reducers and Other Cilk++ Hyperobjects. In 21st Annual ACM Symposium on Parallelism in Algorithms and Architectures. 79–90.
– reference: Robert L Bocchino, Jr., Vikram S. Adve, Sarita V. Adve, and Marc Snir. 2009. Parallel programming must be deterministic by default. In First USENIX Conference on Hot Topics in Parallelism.
– reference: Timothy L. Harris. 2001. A Pragmatic Implementation of Non-blocking Linked-Lists. In Distributed Computing, 15th International Conference, DISC 2001, Lisbon, Portugal, October 3-5, 2001, Proceedings, Jennifer L. Welch (Ed.) (Lecture Notes in Computer Science, Vol. 2180). Springer, 300–314. https://doi.org/10.1007/3-540-45414-4_21 10.1007/3-540-45414-4_21
– reference: Sven Auhagen, Lars Bergstrom, Matthew Fluet, and John H. Reppy. 2011. Garbage collection for multicore NUMA machines. In Proceedings of the 2011 ACM SIGPLAN workshop on Memory Systems Performance and Correctness (MSPC). 51–57.
– reference: Jatin Arora, Sam Westrick, and Umut A. Acar. 2023. Replication instructions for Article: Efficient Parallel Functional Programming with Effects. https://doi.org/10.5281/zenodo.7824069 10.5281/zenodo.7824069
– reference: Doug Lea. 2000. A Java fork/join framework. In Proceedings of the ACM 2000 conference on Java Grande (JAVA ’00). 36–43.
– reference: 2015. Folly: Facebook Open-source Library. https://github.com/facebook/folly
– reference: Robert H. Halstead, Jr.. 1984. Implementation of Multilisp: Lisp on a Multiprocessor. In Proceedings of the 1984 ACM Symposium on LISP and functional programming (LFP ’84). ACM, 9–17.
– reference: 2011. Finagle: A Protocol-Agnostic RPC System. https://twitter.github.io/finagle/
– reference: Jason Evans. 2006. A Scalable Concurrent malloc(3) Implementation for FreeBSD. 01.
– reference: Jatin Arora, Sam Westrick, and Umut A. Acar. 2021. Provably Space Efficient Parallel Functional Programming. In Proceedings of the 48th Annual ACM Symposium on Principles of Programming Languages (POPL)".
– reference: Guy E. Blelloch, Phillip B. Gibbons, and Yossi Matias. 1999. Provably efficient scheduling for languages with fine-grained parallelism. J. ACM, 46 (1999), March, 281–321.
– reference: K. C. Sivaramakrishnan, Lukasz Ziarek, and Suresh Jagannathan. 2014. MultiMLton: A multicore-aware runtime for standard ML. Journal of Functional Programming, FirstView (2014), 6, 1–62.
– reference: Giuseppe Attardi, Tito Flagella, and Pietro Iglio. 1998. A Customisable Memory Management Framework for C++. Software Prac. Experience, 28, 11 (1998), Nov., 1143–1183. ftp://ftp.di.unipi.it/pub/Papers/attardi/SPE.ps.gz
– reference: Matthew Fluet, Mike Rainey, and John Reppy. 2008. A scheduling framework for general-purpose parallel languages. In ACM SIGPLAN International Conference on Functional Programming (ICFP).
– reference: Sam Westrick, Rohan Yadav, Matthew Fluet, and Umut A. Acar. 2020. Disentanglement in Nested-Parallel Programs. In Proceedings of the 47th Annual ACM Symposium on Principles of Programming Languages (POPL)".
– reference: Peng Li, Simon Marlow, Simon L. Peyton Jones, and Andrew P. Tolmach. 2007. Lightweight concurrency primitives for GHC. In Proceedings of the ACM SIGPLAN Workshop on Haskell, Haskell 2007, Freiburg, Germany, September 30, 2007. 107–118.
– reference: Chaitanya Koparkar, Mike Rainey, Michael Vollmer, Milind Kulkarni, and Ryan R. Newton. 2021. Efficient Tree-Traversals: Reconciling Parallelism and Dense Data Representations. 5, ICFP (2021), Article 91, aug, 29 pages. https://doi.org/10.1145/3473596 10.1145/3473596
– reference: Stefan K. Muller, Umut A. Acar, and Robert Harper. 2017. Responsive Parallel Computation: Bridging Competitive and Cooperative Threading. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2017). ACM, New York, NY, USA. 677–692. isbn:978-1-4503-4988-8
– reference: Guy E. Blelloch. 1996. Programming Parallel Algorithms. Commun. ACM, 39, 3 (1996), 85–97.
– reference: Guy E. Blelloch, Jonathan C. Hardwick, Jay Sipelstein, Marco Zagha, and Siddhartha Chatterjee. 1994. Implementation of a Portable Nested Data-Parallel Language. J. Parallel Distrib. Comput., 21, 1 (1994), 4–14.
– reference: Arvind, Rishiyur S. Nikhil, and Keshav K. Pingali. 1989. I-structures: Data Structures for Parallel Computing. ACM Trans. Program. Lang. Syst., 11, 4 (1989), Oct., 598–632.
– reference: Prakash Prabhu, Stephen R. Beard, Sotiris Apostolakis, Ayal Zaks, and David I. August. 2018. MemoDyn: Exploiting Weakly Consistent Data Structures for Dynamic Parallel Memoization. In Proceedings of the 27th International Conference on Parallel Architectures and Compilation Techniques (PACT ’18). Association for Computing Machinery, New York, NY, USA. Article 15, 12 pages. isbn:9781450359863 https://doi.org/10.1145/3243176.3243193 10.1145/3243176.3243193
– reference: 2009. Intel Cilk++ SDK Programmer’s Guide. Document Number: 322581-001US
– reference: A. Krishnamurthy, D. E. Culler, A. Dusseau, S. C. Goldstein, S. Lumetta, T. von Eicken, and K. Yelick. 1993. Parallel Programming in Split-C. In Proceedings of the 1993 ACM/IEEE Conference on Supercomputing (Supercomputing ’93). ACM, New York, NY, USA. 262–273. isbn:0-8186-4340-4 https://doi.org/10.1145/169627.169724 10.1145/169627.169724
– reference: Simon L. Peyton Jones, Roman Leshchinskiy, Gabriele Keller, and Manuel M. T. Chakravarty. 2008. Harnessing the Multicores: Nested Data Parallelism in Haskell. In FSTTCS. 383–414.
– reference: Umut A. Acar, Arthur Charguéraud, Adrien Guatto, Mike Rainey, and Filip Sieczkowski. 2018. Heartbeat Scheduling: Provable Efficiency for Nested Parallelism. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2018). 769–782. isbn:978-1-4503-5698-5
– reference: Daniel Anderson, Guy E. Blelloch, Laxman Dhulipala, Magdalen Dobson, and Yihan Sun. 2022. The problem-based benchmark suite (PBBS), V2. In PPoPP ’22: 27th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, Seoul, Republic of Korea, April 2 - 6, 2022, Jaejin Lee, Kunal Agrawal, and Michael F. Spear (Eds.). ACM, 445–447. https://doi.org/10.1145/3503221.3508422 10.1145/3503221.3508422
– reference: Guy E. Blelloch, Daniel Anderson, and Laxman Dhulipala. 2020. ParlayLib - A Toolkit for Parallel Algorithms on Shared-Memory Multicore Machines. In SPAA ’20: 32nd ACM Symposium on Parallelism in Algorithms and Architectures, Virtual Event, USA, July 15-17, 2020, Christian Scheideler and Michael Spear (Eds.). ACM, 507–509. https://doi.org/10.1145/3350755.3400254 10.1145/3350755.3400254
– reference: MLton web site. http://www.mlton.org
– reference: Stefan K. Muller, Umut A. Acar, and Robert Harper. 2018. Competitive Parallelism: Getting Your Priorities Right. Proc. ACM Program. Lang., 2, ICFP (2018), Article 95, July, 30 pages. issn:2475-1421
– reference: Atsushi Ohori, Kenjiro Taura, and Katsuhiro Ueno. 2018. Making SML# a General-purpose High-performance Language. Unpublished Manuscript
– reference: Daniel Spoonhower. 2009. Scheduling Deterministic Parallel Programs. Ph. D. Dissertation. Carnegie Mellon University. https://www.cs.cmu.edu/~rwh/theses/spoonhower.pdf
– reference: Manuel M. T. Chakravarty, Roman Leshchinskiy, Simon L. Peyton Jones, Gabriele Keller, and Simon Marlow. 2007. Data parallel Haskell: a status report. In Proceedings of the POPL 2007 Workshop on Declarative Aspects of Multicore Programming, DAMP 2007, Nice, France, January 16, 2007. 10–18.
– reference: Trevor Alexander Brown. 2015. Reclaiming Memory for Lock-Free Data Structures: There Has to Be a Better Way. In Proceedings of the 2015 ACM Symposium on Principles of Distributed Computing (PODC ’15). Association for Computing Machinery, New York, NY, USA. 261–270. isbn:9781450336178 https://doi.org/10.1145/2767386.2767436 10.1145/2767386.2767436
– reference: Sam Westrick, Jatin Arora, and Umut A. Acar. 2022. Entanglement Detection With Near-Zero Cost. In Proceedings of the 24th ACM SIGPLAN International Conference on Functional Programming (ICFP 2022).
– reference: Emery D. Berger, Ting Yang, Tongping Liu, and Gene Novark. 2009. Grace: Safe Multithreaded Programming for C/C++. In Proceedings of the 24th ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA ’09). Association for Computing Machinery, New York, NY, USA. 81–96. isbn:9781605587660 https://doi.org/10.1145/1640089.1640096 10.1145/1640089.1640096
– reference: Richard Jones, Antony Hosking, and Eliot Moss. 2012. The Garbage Collection Handbook : The Art of Automatic Memory Management. CRC Press.
– reference: Robert W. Numrich and John Reid. 1998. Co-array Fortran for Parallel Programming. SIGPLAN Fortran Forum, 17, 2 (1998), Aug., 1–31. issn:1061-7264 https://doi.org/10.1145/289918.289920 10.1145/289918.289920
– reference: Kyle Singer, Yifan Xu, and I-Ting Angelina Lee. 2019. Proactive Work Stealing for Futures. In Proceedings of the 24th Symposium on Principles and Practice of Parallel Programming (PPoPP ’19). ACM, New York, NY, USA. 257–271. isbn:978-1-4503-6225-2 https://doi.org/10.1145/3293883.3295735 10.1145/3293883.3295735
– reference: Umut A. Acar, Naama Ben-David, and Mike Rainey. 2017. Contention in Structured Concurrency: Provably Efficient Dynamic Non-Zero Indicators for Nested Parallelism. In Proceedings of the 22Nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP ’17). 75–88. isbn:978-1-4503-4493-7
– reference: Stefan K. Muller and Umut A. Acar. 2016. Latency-Hiding Work Stealing: Scheduling Interacting Parallel Computations with Work Stealing. In Proceedings of the 28th ACM Symposium on Parallelism in Algorithms and Architectures, SPAA 2016, Asilomar State Beach/Pacific Grove, CA, USA, July 11-13, 2016. 71–82.
– reference: Kathy Yelick, Luigi Semenzato, Geoff Pike, Carleton Miyamoto, Ben Liblit, Arvind Krishnamurthy, Paul Hilfinger, Susan Graham, David Gay, Phil Colella, and Alex Aiken. 1998. Titanium: a high-performance Java dialect. Concurrency: Practice and Experience, 10, 11-13 (1998), 825–836.
– reference: Julian Shun, Guy E. Blelloch, Jeremy T. Fineman, Phillip B. Gibbons, Aapo Kyrola, Harsha Vardhan Simhadri, and Kanat Tangwongsan. 2012. Brief Announcement: The Problem Based Benchmark Suite. In Proceedings of the Twenty-fourth Annual ACM Symposium on Parallelism in Algorithms and Architectures (SPAA ’12). 68–70. isbn:978-1-4503-1213-4
– reference: Kevin Hammond. 2011. Why Parallel Functional Programming Matters: Panel Statement. In Reliable Software Technologies - Ada-Europe 2011 - 16th Ada-Europe International Conference on Reliable Software Technologies, Edinburgh, UK, June 20-24, 2011. Proceedings. 201–205.
– reference: Simon Marlow and Simon L. Peyton Jones. 2011. Multicore garbage collection with local heaps. In Proceedings of the 10th International Symposium on Memory Management, ISMM 2011, San Jose, CA, USA, June 04 - 05, 2011, Hans-Juergen Boehm and David F. Bacon (Eds.). ACM, 21–32.
– reference: Sarita V. Adve. 2010. Data races are evil with no exceptions: technical perspective. Commun. ACM, 53, 11 (2010), 84.
– reference: K. C. Sivaramakrishnan, Stephen Dolan, Leo White, Sadiq Jaffer, Tom Kelly, Anmol Sahoo, Sudha Parimala, Atul Dhiman, and Anil Madhavapeddy. 2020. Retrofitting parallelism onto OCaml. Proc. ACM Program. Lang., 4, ICFP (2020), 113:1–113:30.
– reference: Robert D. Blumofe, Christopher F. Joerg, Bradley C. Kuszmaul, Charles E. Leiserson, Keith H. Randall, and Yuli Zhou. 1995. Cilk: An Efficient Multithreaded Runtime System. In Proceedings of the Fifth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. Santa Barbara, California. 207–216.
– reference: Guy E. Blelloch and Perry Cheng. 1999. On Bounding Time and Space for Multiprocessor Garbage Collection. In Proceedings of SIGPLAN’99 Conference on Programming Languages Design and Implementation (ACM SIGPLAN Notices). ACM Press, Atlanta. 104–117.
– reference: Rust Team. 2019. Rust Language. https://www.rust-lang.org/
– reference: Ananya Kumar, Guy E. Blelloch, and Robert Harper. 2017. Parallel functional arrays. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017, Paris, France, January 18-20, 2017, Giuseppe Castagna and Andrew D. Gordon (Eds.). ACM, 706–718.
– ident: e_1_2_1_26_1
  doi: 10.1145/209936.209958
– ident: e_1_2_1_33_1
  doi: 10.26421/QIC6.1-6
– volume-title: Proceedings of the 14th ACM SIGPLAN International Conference on Functional Programming (ICFP ’18)
  year: 2018
  ident: e_1_2_1_66_1
– ident: e_1_2_1_75_1
  doi: 10.1137/1.9781611976021.11
– ident: e_1_2_1_36_1
  doi: 10.1145/1411204.1411239
– ident: e_1_2_1_22_1
  doi: 10.1145/3350755.3400254
– volume: 20
  start-page: 5
  year: 2011
  ident: e_1_2_1_37_1
  article-title: Implicitly threaded parallelism in Manticore
  publication-title: Journal of Functional Programming
– ident: e_1_2_1_76_1
  doi: 10.1145/3293883.3295735
– ident: e_1_2_1_31_1
  doi: 10.1145/1094811.1094852
– ident: e_1_2_1_6_1
  doi: 10.1017/S0956796816000101
– ident: e_1_2_1_44_1
  doi: 10.1007/3-540-45414-4_21
– ident: e_1_2_1_34_1
– volume-title: Proceedings of the 2011 ACM SIGPLAN workshop on Memory Systems Performance and Correctness (MSPC). 51–57
  ident: e_1_2_1_16_1
– ident: e_1_2_1_30_1
  doi: 10.1145/1248648.1248652
– ident: e_1_2_1_40_1
  doi: 10.1145/2688500.2688501
– ident: e_1_2_1_39_1
  doi: 10.1145/1583991.1584017
– volume-title: Compacting Garbage Collection with Ambiguous Roots. DEC Western Research Laboratory
  year: 1988
  ident: e_1_2_1_17_1
– ident: e_1_2_1_42_1
  doi: 10.1145/800055.802017
– volume-title: 3rd USENIX Workshop on Hot Topics in Parallelism, HotPar’11
  year: 2011
  ident: e_1_2_1_28_1
– ident: e_1_2_1_41_1
  doi: 10.1145/3178487.3178494
– ident: e_1_2_1_62_1
  doi: 10.1145/3385412.3386013
– volume-title: Proceedings of the 48th Annual ACM Symposium on Principles of Programming Languages (POPL)".
  ident: e_1_2_1_11_1
– ident: e_1_2_1_32_1
  doi: 10.1145/2627373.2627375
– ident: e_1_2_1_51_1
  doi: 10.1090/gsm/047
– volume-title: Chakravarty
  year: 2008
  ident: e_1_2_1_69_1
– volume-title: Proceedings of the ACM SIGPLAN Workshop on Haskell, Haskell 2007
  year: 2007
  ident: e_1_2_1_57_1
– volume-title: Blelloch and Perry Cheng
  year: 1999
  ident: e_1_2_1_23_1
– ident: e_1_2_1_24_1
  doi: 10.1145/301970.301974
– ident: e_1_2_1_61_1
– ident: e_1_2_1_72_1
– volume-title: Scheduling Deterministic Parallel Programs. Ph. D. Dissertation
  ident: e_1_2_1_79_1
– volume-title: A Customisable Memory Management Framework
  year: 1994
  ident: e_1_2_1_14_1
– ident: e_1_2_1_19_1
  doi: 10.1109/SC.2012.71
– ident: e_1_2_1_53_1
  doi: 10.1145/169627.169724
– ident: e_1_2_1_48_1
– ident: e_1_2_1_2_1
– ident: e_1_2_1_27_1
  doi: 10.5555/1855591.1855595
– ident: e_1_2_1_21_1
  doi: 10.1145/227234.227246
– start-page: 4493
  volume-title: Proceedings of the 22Nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP ’17)
  year: 2017
  ident: e_1_2_1_3_1
– volume-title: The Garbage Collection Handbook : The Art of Automatic Memory Management
  ident: e_1_2_1_49_1
– ident: e_1_2_1_5_1
  doi: 10.1145/3192366.3192391
– ident: e_1_2_1_73_1
  doi: 10.1145/2612669.2612687
– ident: e_1_2_1_74_1
  doi: 10.1145/2312005.2312018
– volume-title: Proceedings of the 28th ACM Symposium on Parallelism in Algorithms and Architectures, SPAA 2016, Asilomar State Beach/Pacific Grove, CA, USA
  year: 2016
  ident: e_1_2_1_63_1
– ident: e_1_2_1_71_1
  doi: 10.1145/2951913.2951935
– ident: e_1_2_1_9_1
  doi: 10.1109/PMMPC.1995.504336
– ident: e_1_2_1_25_1
  doi: 10.1006/jpdc.1994.1038
– ident: e_1_2_1_65_1
  doi: 10.1145/3236790
– ident: e_1_2_1_38_1
– volume-title: Proceedings of the 47th Annual ACM Symposium on Principles of Programming Languages (POPL)".
  ident: e_1_2_1_81_1
– ident: e_1_2_1_45_1
  doi: 10.1145/1133956.1133963
– ident: e_1_2_1_83_1
  doi: 10.1145/1993498.1993572
– ident: e_1_2_1_60_1
  doi: 10.1145/248052.248106
– volume-title: Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages, POPL 2017
  year: 2017
  ident: e_1_2_1_54_1
– volume-title: Mostly-Copying Garbage Collection picks up Generations and C++. DEC Western Research Laboratory
  ident: e_1_2_1_18_1
– ident: e_1_2_1_67_1
  doi: 10.1145/289918.289920
– ident: e_1_2_1_56_1
  doi: 10.1145/337449.337465
– ident: e_1_2_1_20_1
  doi: 10.1145/1640089.1640096
– ident: e_1_2_1_1_1
– ident: e_1_2_1_8_1
  doi: 10.1145/1839676.1839697
– ident: e_1_2_1_43_1
  doi: 10.1007/978-3-642-21338-0_17
– ident: e_1_2_1_68_1
– ident: e_1_2_1_70_1
  doi: 10.1145/3243176.3243193
– ident: e_1_2_1_13_1
  doi: 10.1145/69558.69562
– ident: e_1_2_1_58_1
  doi: 10.1007/978-3-319-03850-6_15
– volume-title: FirstView
  year: 2014
  ident: e_1_2_1_78_1
– ident: e_1_2_1_4_1
  doi: 10.1007/s00224-002-1057-3
– ident: e_1_2_1_29_1
  doi: 10.1145/2767386.2767436
– ident: e_1_2_1_82_1
  doi: 10.1002/(SICI)1096-9128(199809/11)10:11/13<825::AID-CPE383>3.0.CO;2-H
– ident: e_1_2_1_15_1
  doi: 10.5555/300092.300094
– ident: e_1_2_1_35_1
  doi: 10.1145/3428196
– ident: e_1_2_1_52_1
  doi: 10.1145/3473596
– ident: e_1_2_1_12_1
  doi: 10.5281/zenodo.7824069
– ident: e_1_2_1_7_1
  doi: 10.1145/2951913.2951946
– ident: e_1_2_1_77_1
  doi: 10.1145/3408995
– ident: e_1_2_1_47_1
– ident: e_1_2_1_64_1
  doi: 10.1145/3062341.3062370
– ident: e_1_2_1_50_1
  doi: 10.1145/1863543.1863582
– volume-title: Proceedings of the 24th ACM SIGPLAN International Conference on Functional Programming (ICFP
  year: 2022
  ident: e_1_2_1_80_1
– ident: e_1_2_1_55_1
  doi: 10.1145/2784731.2784736
– volume-title: Proceedings of the 10th International Symposium on Memory Management, ISMM 2011
  year: 2011
  ident: e_1_2_1_59_1
– ident: e_1_2_1_10_1
  doi: 10.1145/3503221.3508422
– ident: e_1_2_1_46_1
  doi: 10.1145/2647508.2647514
SSID ssj0001934839
Score 2.26296
Snippet Although functional programming languages simplify writing safe parallel programs by helping programmers to avoid data races, they have traditionally delivered...
SourceID crossref
acm
SourceType Enrichment Source
Index Database
Publisher
StartPage 1558
SubjectTerms Functional languages
Garbage collection
Parallel programming languages
Software and its engineering
SubjectTermsDisplay Software and its engineering -- Functional languages
Software and its engineering -- Garbage collection
Software and its engineering -- Parallel programming languages
Title Efficient Parallel Functional Programming with Effects
URI https://dl.acm.org/doi/10.1145/3591284
Volume 7
WOSCitedRecordID wos001005701900066&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
journalDatabaseRights – providerCode: PRVHPJ
  databaseName: ROAD: Directory of Open Access Scholarly Resources (ISSN International Center)
  customDbUrl:
  eissn: 2475-1421
  dateEnd: 99991231
  omitProxy: false
  ssIdentifier: ssj0001934839
  issn: 2475-1421
  databaseCode: M~E
  dateStart: 20170101
  isFulltext: true
  titleUrlDefault: https://road.issn.org
  providerName: ISSN International Centre
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV1LSwMxEA6-Dl58i_VFDuJFVptstkmOxQcKKgtW8Fay2SwIdlvaKp787ea1u6EK6sHLUkKylHwfM7OTyXwAHBFSIFoQFklFeEREnEVcsEwDop2dUKITZ4UVm6D39-zpiae-VnVi5QRoWbL3dz76V6j1mAbbXJ39A9z1S_WA_q1B108Nu37-CvhL2xTCHPGnYmyUUl5OrrTz8jm_1NVjDeocrGtfPAmD1LR2arbOo3t-Z44URsHKKss5afgyHPuq26qXtz3uMaogzuA-iEE9Wbqq7sfB6_SkexomHnBsC6Q6jX3ChCYRIu6C86n6ZswbWBrwKL29uAnspY5mWOB7UeJUbb7adWJaYMQJN-60cV3Vcf2MR6vrDN2t66TvF86DRUwTbszh3UeQiuMxYVZzrv777nq1WXvm15roRQ6C6CUIQ3prYMV_P8Cuw30dzKlyA6xW2hzQm-pN0KlpACsawIYGMKABNDSAngZboHd12Tu_jrxGRiQwpdNI4YJQgVEn1x7Udt9HeZvTHCEuSZFQ0pYy40muqJQsUZQXKGOU51jETOjQchsslMNS7QAo2pgjmbWxNB_ZmeSFZEQJpWQWmwqAFtjQG9AfuSYo1Za2wHG1IX3pu8obcZOX_szetwCsJ1bvmJmy-_OUPbDcUHEfLEzHr-oALMm36fNkfGhh_QReDWK_
linkProvider ISSN International Centre
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Efficient+Parallel+Functional+Programming+with+Effects&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Arora%2C+Jatin&rft.au=Westrick%2C+Sam&rft.au=Acar%2C+Umut+A.&rft.date=2023-06-06&rft.issn=2475-1421&rft.eissn=2475-1421&rft.volume=7&rft.issue=PLDI&rft.spage=1558&rft.epage=1583&rft_id=info:doi/10.1145%2F3591284&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3591284
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon