{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,14]],"date-time":"2026-05-14T08:09:58Z","timestamp":1778746198985,"version":"3.51.4"},"reference-count":87,"publisher":"Association for Computing Machinery (ACM)","issue":"POPL","license":[{"start":{"date-parts":[[2024,1,2]],"date-time":"2024-01-02T00:00:00Z","timestamp":1704153600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["CCF-1901381,CCF-2115104,CCF-2119352,CCF-2107241"],"award-info":[{"award-number":["CCF-1901381,CCF-2115104,CCF-2119352,CCF-2107241"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,1,2]]},"abstract":"<jats:p>On any modern computer architecture today, parallelism comes with a modest cost, born from the creation and management of threads or tasks. Today, programmers battle this cost by manually optimizing\/tuning their codes to minimize the cost of parallelism without harming its benefit, performance. This is a difficult battle: programmers must reason about architectural constant factors hidden behind layers of software abstractions, including thread schedulers and memory managers, and their impact on performance, also at scale. In languages that support higher-order functions, the battle hardens: higher order functions can make it difficult, if not impossible, to reason about the cost and benefits of parallelism.<\/jats:p>\n          <jats:p>Motivated by these challenges and the numerous advantages of high-level languages, we believe that it has become essential to manage parallelism automatically so as to minimize its cost and maximize its benefit. This is a challenging problem, even when considered on a case-by-case, application-specific basis. But if a solution were possible, then it could combine the many correctness benefits of high-level languages with performance by managing parallelism without the programmer effort needed to ensure performance. This paper proposes techniques for such automatic management of parallelism by combining static (compilation) and run-time techniques. Specifically, we consider the Parallel ML language with task parallelism, and describe a compiler pipeline that embeds \u201cpotential parallelism\u201d directly into the call-stack and avoids the cost of task creation by default. We then pair this compilation pipeline with a run-time system that dynamically converts potential parallelism into actual parallel tasks. Together, the compiler and run-time system guarantee that the cost of parallelism remains low without losing its benefit. We prove that our techniques have no asymptotic impact on the work and span of parallel programs and thus preserve their asymptotic properties. We implement the proposed techniques by extending the MPL compiler for Parallel ML and show that it can eliminate the burden of manual optimization while delivering good practical performance.<\/jats:p>","DOI":"10.1145\/3632880","type":"journal-article","created":{"date-parts":[[2024,1,5]],"date-time":"2024-01-05T20:48:51Z","timestamp":1704487731000},"page":"1118-1149","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":7,"title":["Automatic Parallelism Management"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-2848-9808","authenticated-orcid":false,"given":"Sam","family":"Westrick","sequence":"first","affiliation":[{"name":"Carnegie Mellon University, Pittsburgh, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4194-7618","authenticated-orcid":false,"given":"Matthew","family":"Fluet","sequence":"additional","affiliation":[{"name":"Rochester Institute of Technology, Rochester, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0002-9659-1636","authenticated-orcid":false,"given":"Mike","family":"Rainey","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, Pittsburgh, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2623-4986","authenticated-orcid":false,"given":"Umut A.","family":"Acar","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, Pittsburgh, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2024,1,5]]},"reference":[{"key":"e_1_3_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/3293883.3295725"},{"key":"e_1_3_1_3_1","unstructured":"Umut A. Acar Jatin Arora Matthew Fluet Ram Raghunathan Sam Westrick and Rohan Yadav. 2020. MPL: A High-Performance Compiler for Parallel ML. https:\/\/github.com\/MPLLang\/mpl."},{"key":"e_1_3_1_4_1","unstructured":"Umut A. Acar Guy Blelloch Matthew Fluet Stefan K. Muller and Ram Raghunathan. 2015. Coupling Memory and Computation for Locality Management. In Summit on Advances in Programming Languages (SNAPL)."},{"key":"e_1_3_1_5_1","doi-asserted-by":"publisher","DOI":"10.1007\/s00224-002-1057-3"},{"key":"e_1_3_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3192366.3192391"},{"key":"e_1_3_1_7_1","doi-asserted-by":"crossref","unstructured":"Umut A. Acar Arthur Chargu\u00e9raud and Mike Rainey. 2011. Oracle Scheduling: Controlling Granularity in Implicitly Parallel Languages. In ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA). 499\u2013518.","DOI":"10.1145\/2048066.2048106"},{"key":"e_1_3_1_8_1","doi-asserted-by":"crossref","unstructured":"Umut A. Acar Arthur Chargu\u00e9raud 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\u201332.","DOI":"10.1145\/2951913.2951946"},{"key":"e_1_3_1_9_1","doi-asserted-by":"crossref","unstructured":"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)\".","DOI":"10.1145\/3434299"},{"key":"e_1_3_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3591284"},{"key":"e_1_3_1_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/s002240011004"},{"key":"e_1_3_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/69558.69562"},{"key":"e_1_3_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/3453483.3454107"},{"key":"e_1_3_1_14_1","doi-asserted-by":"crossref","unstructured":"Michael A. Bender Jeremy T. Fineman Seth Gilbert and Charles E. Leiserson. 2004. On-the-Fly Maintenance of Series-Parallel Relationships in Fork-Join Multithreaded Programs. In 16th Annual ACM Symposium on Parallel Algorithms and Architectures. 133\u2013144.","DOI":"10.1145\/1007912.1007933"},{"key":"e_1_3_1_15_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796812000172"},{"key":"e_1_3_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/227234.227246"},{"key":"e_1_3_1_17_1","doi-asserted-by":"crossref","unstructured":"Guy E. Blelloch Jeremy T. Fineman Phillip B. Gibbons and Harsha Vardhan Simhadri. 2011. Scheduling irregular parallel computations on hierarchical caches. In Proc. ACM Symposium on Parallelism in Algorithms and Architectures (SPAA). 355\u2013366.","DOI":"10.1145\/1989493.1989553"},{"key":"e_1_3_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1007912.1007948"},{"key":"e_1_3_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/324133.324234"},{"key":"e_1_3_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1640089.1640097"},{"key":"e_1_3_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/321812.321815"},{"key":"e_1_3_1_22_1","doi-asserted-by":"crossref","unstructured":"Henry Cejtin Suresh Jagannathan and Stephen T. Weeks. 2000. Flow-directed Closure Conversion for Typed Languages. In European Symposium on Programming. 56\u201371.","DOI":"10.1007\/3-540-46425-5_4"},{"key":"e_1_3_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/1094811.1094852"},{"key":"e_1_3_1_24_1","doi-asserted-by":"crossref","unstructured":"Guang-Ien Cheng Mingdong Feng Charles E. Leiserson Keith H. Randall and Andrew F. Stark. 1998. Detecting data races in Cilk programs that use locks. In Proceedings of the 10th ACM Symposium on Parallel Algorithms and Architectures (SPAA \u201998).","DOI":"10.1145\/277651.277696"},{"key":"e_1_3_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1378533.1378574"},{"key":"e_1_3_1_26_1","doi-asserted-by":"crossref","unstructured":"A. Duran J. Corbalan and E. Ayguade. 2008. An adaptive cut-off for task parallelism. In 2008 SC - International Conference for High Performance Computing Networking Storage and Analysis. 1\u201311.","DOI":"10.1109\/SC.2008.5213927"},{"key":"e_1_3_1_27_1","doi-asserted-by":"publisher","DOI":"10.1109\/12.21127"},{"key":"e_1_3_1_28_1","doi-asserted-by":"crossref","unstructured":"Martin Elsman. 1999. Static Interpretation of Modules. In International Conference on Functional Programming. 208\u2013219.","DOI":"10.1145\/317636.317800"},{"key":"e_1_3_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/165180.165205"},{"key":"e_1_3_1_30_1","doi-asserted-by":"crossref","unstructured":"Mingdong Feng and Charles E. Leiserson. 1997. Efficient Detection of Determinacy Races in Cilk Programs. In Proceedings of the Ninth Annual ACM Symposium on Parallel Algorithms and Architectures (SPAA). 1\u201311.","DOI":"10.1145\/258492.258493"},{"key":"e_1_3_1_31_1","volume-title":"Provably Good Race Detection That Runs in Parallel","author":"Fineman Jeremy T.","year":"2005","unstructured":"Jeremy T. Fineman. 2005. Provably Good Race Detection That Runs in Parallel. Master\u2019s thesis. Massachusetts Institute of Technology, Department of Electrical Engineering and Computer Science, Cambridge, MA."},{"key":"e_1_3_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/1543135.1542490"},{"issue":"5","key":"e_1_3_1_33_1","first-page":"1","article-title":"Implicitly threaded parallelism in Manticore","volume":"20","author":"Fluet Matthew","year":"2011","unstructured":"Matthew Fluet, Mike Rainey, John Reppy, and Adam Shaw. 2011. Implicitly threaded parallelism in Manticore. Journal of Functional Programming 20, 5-6 (2011), 1\u201340.","journal-title":"Journal of Functional Programming"},{"key":"e_1_3_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/1248648.1248656"},{"key":"e_1_3_1_35_1","doi-asserted-by":"crossref","unstructured":"Matteo Frigo Charles E. Leiserson and Keith H. Randall. 1998. The Implementation of the Cilk-5 Multithreaded Language. In PLDI. 212\u2013223.","DOI":"10.1145\/277650.277725"},{"key":"e_1_3_1_36_1","doi-asserted-by":"publisher","unstructured":"Souradip Ghosh Michael Cuevas Simone Campanoni and Peter Dinda. 2020. Compiler-Based Timing For Extremely Fine-Grain Preemptive Parallelism. In SC20: International Conference for High Performance Computing Networking Storage and Analysis. 1\u201315. https:\/\/doi.org\/10.1109\/SC41405.2020.00057 10.1109\/SC41405.2020.00057","DOI":"10.1109\/SC41405.2020.00057"},{"key":"e_1_3_1_37_1","doi-asserted-by":"crossref","unstructured":"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 Vienna Austria February 24-28 2018. 81\u201393.","DOI":"10.1145\/3178487.3178494"},{"key":"e_1_3_1_38_1","doi-asserted-by":"publisher","unstructured":"Kyle C. Hale and Peter A. Dinda. 2018. An Evaluation of Asynchronous Software Events on Modern Hardware. In 2018 IEEE 26th International Symposium on Modeling Analysis and Simulation of Computer and Telecommunication Systems (MASCOTS). 355\u2013368. https:\/\/doi.org\/10.1109\/MASC0TS.2018.00041 10.1109\/MASC0TS.2018.00041","DOI":"10.1109\/MASC0TS.2018.00041"},{"key":"e_1_3_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/800055.802017"},{"issue":"4","key":"e_1_3_1_40_1","first-page":"55","article-title":"Backtracking-based load balancing","volume":"44","author":"Hiraishi Tasuku","year":"2009","unstructured":"Tasuku Hiraishi, Masahiro Yasugi, Seiji Umatani, and Taiichi Yuasa. 2009. Backtracking-based load balancing. Proceedings of the 2009 ACM SIGPLAN Symposium on Principles & Practice of Parallel Programming 44, 4 (February 2009), 55\u201364.","journal-title":"Proceedings of the 2009 ACM SIGPLAN Symposium on Principles & Practice of Parallel Programming"},{"key":"e_1_3_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/182409.182442"},{"key":"e_1_3_1_42_1","doi-asserted-by":"crossref","unstructured":"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 \u201914. 75\u201386.","DOI":"10.1145\/2647508.2647514"},{"key":"e_1_3_1_43_1","unstructured":"Intel. 2011. Intel Threading Building Blocks. https:\/\/www.threadingbuildingblocks.org\/."},{"key":"e_1_3_1_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/2967938.2967968"},{"key":"e_1_3_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062374"},{"key":"e_1_3_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/337449.337465"},{"key":"e_1_3_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2809808"},{"key":"e_1_3_1_48_1","doi-asserted-by":"crossref","unstructured":"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\u2013118.","DOI":"10.1145\/1291201.1291217"},{"key":"e_1_3_1_49_1","unstructured":"Hans-Wolfgang Loidl and Kevin Hammond. 1995. On the granularity of divide-and-conquer parallelism. In Proceedings of the 1995 Glasgow Workshop on Functional Programming. 1\u201310."},{"key":"e_1_3_1_50_1","doi-asserted-by":"crossref","unstructured":"P. Lopez M. Hermenegildo and S. Debray. 1996. A methodology for granularity-based control of parallelism in logic programs. Journal of Symbolic Computation 21 (June 1996) 715\u2013734. Issue 4-6.","DOI":"10.1006\/jsco.1996.0038"},{"key":"e_1_3_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993478.1993482"},{"key":"e_1_3_1_52_1","doi-asserted-by":"crossref","unstructured":"John Mellor-Crummey. 1991. On-the-fly Detection of Data Races for Programs with Nested Fork-Join Parallelism. In Proceedings of Supercomputing\u201991. 24\u201333.","DOI":"10.1145\/125826.125861"},{"key":"e_1_3_1_53_1","unstructured":"MLton n.d.. MLton web site. http:\/\/www.mlton.org."},{"key":"e_1_3_1_54_1","doi-asserted-by":"publisher","DOI":"10.1109\/71.86103"},{"key":"e_1_3_1_55_1","doi-asserted-by":"crossref","unstructured":"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).","DOI":"10.1145\/3385412.3386013"},{"key":"e_1_3_1_56_1","doi-asserted-by":"crossref","unstructured":"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\u201382.","DOI":"10.1145\/2935764.2935793"},{"key":"e_1_3_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062370"},{"key":"e_1_3_1_58_1","unstructured":"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 \u201918)."},{"key":"e_1_3_1_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/3591249"},{"key":"e_1_3_1_60_1","doi-asserted-by":"crossref","unstructured":"Stefan K. Muller Sam Westrick and Umut A. Acar. 2019. Fairness in Responsive Parallelism. In Proceedings of the 24th ACM SIGPLAN International Conference on Functional Programming (ICFP 2019).","DOI":"10.1145\/3341685"},{"key":"e_1_3_1_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/781498.781528"},{"key":"e_1_3_1_62_1","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0024155"},{"key":"e_1_3_1_63_1","doi-asserted-by":"crossref","unstructured":"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\u2013414.","DOI":"10.1007\/978-3-540-89330-1_10"},{"key":"e_1_3_1_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/2951913.2951935"},{"key":"e_1_3_1_65_1","unstructured":"Mike Rainey. 2023. The best multicore-parallelization refactoring you\u2019ve never heard of. arXiv:2307.10556 [cs.DC]"},{"key":"e_1_3_1_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/3453483.3460969"},{"key":"e_1_3_1_67_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-16612-9_28"},{"key":"e_1_3_1_68_1","doi-asserted-by":"crossref","unstructured":"Raghavan Raman Jisheng Zhao Vivek Sarkar Martin Vechev and Eran Yahav. 2012. Scalable and Precise Dynamic Datarace Detection for Structured Parallelism. In Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI \u201912). 531\u2013542.","DOI":"10.1145\/2254064.2254127"},{"key":"e_1_3_1_69_1","doi-asserted-by":"crossref","unstructured":"John C. Reynolds. 1972. Definitional Interpreters for Higher-order Programming Languages. In Proceedings of the 25th ACM National Conference. 717\u2013740.","DOI":"10.1145\/800194.805852"},{"key":"e_1_3_1_70_1","unstructured":"Stefan Savage Michael Burrows Greg Nelson Patrick Sobalvarro and Thomas Anderson. 1997. Eraser: A Dynamic Race Detector for Multi-Threaded Programs. In Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles (SOSP)."},{"key":"e_1_3_1_71_1","doi-asserted-by":"publisher","DOI":"10.1145\/3018743.3018758"},{"key":"e_1_3_1_72_1","unstructured":"Kish Shen Vitor Santos Costa and Andy King. 1999. Distance: A new metric for controlling granularity for parallel execution. Journal of Functional and Logic Programming 1999 (1999) 1\u201323."},{"key":"e_1_3_1_73_1","doi-asserted-by":"crossref","unstructured":"K. C. Sivaramakrishnan Lukasz Ziarek and Suresh Jagannathan. 2014. MultiMLton: A multicore-aware runtime for standard ML. Journal of Functional Programming FirstView (6 2014) 1\u201362.","DOI":"10.1017\/S0956796814000161"},{"key":"e_1_3_1_74_1","doi-asserted-by":"publisher","DOI":"10.1145\/2103656.2103702"},{"key":"e_1_3_1_75_1","unstructured":"Daniel Spoonhower. 2009. Scheduling Deterministic Parallel Programs. Ph.D. Dissertation. Carnegie Mellon University. https:\/\/www.cs.cmu.edu\/~rwh\/theses\/spoonhower.pdf"},{"key":"e_1_3_1_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/1583991.1584019"},{"key":"e_1_3_1_77_1","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796898003086"},{"key":"e_1_3_1_78_1","volume-title":"Enhancing Productivity and Performance Portability of General-Purpose Parallel Programming","author":"Tzannes Alexandros","year":"2012","unstructured":"Alexandros Tzannes. 2012. Enhancing Productivity and Performance Portability of General-Purpose Parallel Programming. Ph.D. Dissertation. University of Maryland."},{"key":"e_1_3_1_79_1","doi-asserted-by":"crossref","unstructured":"Alexandros Tzannes George C. Caragea Rajeev Barua and Uzi Vishkin. 2010. Lazy binary-splitting: a run-time adaptive work-stealing scheduler. In PPoPP \u201910. 179\u2013190.","DOI":"10.1145\/1693453.1693479"},{"key":"e_1_3_1_80_1","doi-asserted-by":"publisher","DOI":"10.1145\/2629643"},{"key":"e_1_3_1_81_1","doi-asserted-by":"crossref","unstructured":"Robert Utterback Kunal Agrawal Jeremy T. Fineman and I-Ting Angelina Lee. 2016. Provably Good and Practically Efficient Parallel Race Detection for Fork-Join Programs. 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. 83\u201394.","DOI":"10.1145\/2935764.2935801"},{"key":"e_1_3_1_82_1","doi-asserted-by":"publisher","DOI":"10.1145\/1159876.1159877"},{"key":"e_1_3_1_83_1","volume-title":"Parallel Execution of Lisp Programs","author":"Weening Joseph S.","year":"1989","unstructured":"Joseph S. Weening. 1989. Parallel Execution of Lisp Programs. Ph.D. Dissertation. Stanford University. Computer Science Technical Report STAN-CS-89-1265."},{"key":"e_1_3_1_84_1","volume-title":"Efficient and Scalable Parallel Functional Programming Through Disentanglement","author":"Westrick Sam","year":"2022","unstructured":"Sam Westrick. 2022. Efficient and Scalable Parallel Functional Programming Through Disentanglement. Ph.D. Dissertation. Carnegie Mellon University. https:\/\/www.cs.cmu.edu\/~swestric\/22\/thesis.pdf"},{"key":"e_1_3_1_85_1","doi-asserted-by":"crossref","unstructured":"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).","DOI":"10.1145\/3547646"},{"key":"e_1_3_1_86_1","doi-asserted-by":"crossref","unstructured":"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)\".","DOI":"10.1145\/3371115"},{"key":"e_1_3_1_87_1","doi-asserted-by":"publisher","DOI":"10.1145\/3332466.3374536"},{"key":"e_1_3_1_88_1","doi-asserted-by":"publisher","DOI":"10.1145\/1095810.1095832"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3632880","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3632880","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3632880","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,7,4]],"date-time":"2025-07-04T20:06:36Z","timestamp":1751659596000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3632880"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,1,2]]},"references-count":87,"journal-issue":{"issue":"POPL","published-print":{"date-parts":[[2024,1,2]]}},"alternative-id":["10.1145\/3632880"],"URL":"https:\/\/doi.org\/10.1145\/3632880","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,1,2]]},"assertion":[{"value":"2024-01-05","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}