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...
Saved in:
| Published in: | Proceedings of ACM on programming languages Vol. 7; no. PLDI; pp. 1558 - 1583 |
|---|---|
| Main Authors: | , , |
| 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 |