Automatic Parallelism Management

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...

Full description

Saved in:
Bibliographic Details
Published in:Proceedings of ACM on programming languages Vol. 8; no. POPL; pp. 1118 - 1149
Main Authors: Westrick, Sam, Fluet, Matthew, Rainey, Mike, Acar, Umut A.
Format: Journal Article
Language:English
Published: New York, NY, USA ACM 02.01.2024
Subjects:
ISSN:2475-1421, 2475-1421
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Abstract 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. 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 “potential parallelism” 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.
AbstractList 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. 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 “potential parallelism” 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.
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. 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 “potential parallelism” 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.
ArticleNumber 38
Author Fluet, Matthew
Rainey, Mike
Acar, Umut A.
Westrick, Sam
Author_xml – sequence: 1
  givenname: Sam
  orcidid: 0000-0003-2848-9808
  surname: Westrick
  fullname: Westrick, Sam
  email: swestric@cs.cmu.edu
  organization: Carnegie Mellon University, Pittsburgh, USA
– sequence: 2
  givenname: Matthew
  orcidid: 0000-0002-4194-7618
  surname: Fluet
  fullname: Fluet, Matthew
  email: mtf@cs.rit.edu
  organization: Rochester Institute of Technology, Rochester, USA
– sequence: 3
  givenname: Mike
  orcidid: 0009-0002-9659-1636
  surname: Rainey
  fullname: Rainey, Mike
  email: me@mike-rainey.site
  organization: Carnegie Mellon University, Pittsburgh, USA
– sequence: 4
  givenname: Umut A.
  orcidid: 0000-0002-2623-4986
  surname: Acar
  fullname: Acar, Umut A.
  email: umut@cs.cmu.edu
  organization: Carnegie Mellon University, Pittsburgh, USA
BookMark eNptz01LAzEQBuAgFay1ePe0N0_RZJI0u8dS_IKKHvS8TLJZiWSzksSD_96VVhHxMjPwPgwzx2QWx-gIOeXsgnOpLsVKQF2zAzIHqRXlEvjs13xEljm_MsZ4I2Qtmjmp1u9lHLB4Wz1iwhBc8Hmo7jHiixtcLCfksMeQ3XLfF-T5-uppc0u3Dzd3m_WWImhdaNerWnEtpBGKOeRgGrAoUHVGMgXWdNZKhVoiM3I1lc4BTCmA5c5NckHobq9NY87J9a31ZbprjCWhDy1n7deH7f7DyZ__8W_JD5g-_pFnO4l2-EHf4SefEViy
CitedBy_id crossref_primary_10_1017_S0956796825100051
Cites_doi 10.1109/MASC0TS.2018.00041
10.1145/3453483.3454107
10.1145/3591284
10.1145/3332466.3374536
10.1145/3018743.3018758
10.1145/1543135.1542490
10.1145/3293883.3295725
10.1109/SC41405.2020.00057
10.1145/1291201.1291217
10.1006/jsco.1996.0038
10.1145/1007912.1007933
10.1007/3-540-46425-5_4
10.1145/258492.258493
10.1145/125826.125861
10.1145/1693453.1693479
10.1007/978-3-540-89330-1_10
10.1145/2951913.2951946
10.1145/1159876.1159877
10.1145/1640089.1640097
10.1007/s00224-002-1057-3
10.1145/337449.337465
10.1145/2103656.2103702
10.1145/1993478.1993482
10.1145/2647508.2647514
10.1145/227234.227246
10.1145/277650.277725
10.1145/2967938.2967968
10.1017/S0956796814000161
10.1145/1378533.1378574
10.1145/324133.324234
10.1145/2048066.2048106
10.1145/3341685
10.1017/S0956796812000172
10.1145/3062341.3062370
10.1007/BFb0024155
10.1145/800055.802017
10.1145/3371115
10.1145/1094811.1094852
10.1145/182409.182442
10.1145/3434299
10.1109/12.21127
10.1145/3385412.3386013
10.1007/s002240011004
10.1145/1583991.1584019
10.1145/3178487.3178494
10.1145/2935764.2935793
10.1145/1007912.1007948
10.1145/2254064.2254127
10.1145/800194.805852
10.1145/3192366.3192391
10.1145/3591249
10.1007/978-3-642-16612-9_28
10.1145/3062341.3062374
10.1145/2935764.2935801
10.1145/3453483.3460969
10.1145/317636.317800
10.1145/2629643
10.1145/277651.277696
10.1145/2951913.2951935
10.1145/3547646
10.1109/71.86103
10.1145/781498.781528
10.1145/2809808
10.1145/165180.165205
10.1145/1989493.1989553
10.1109/SC.2008.5213927
10.1017/S0956796898003086
10.1145/321812.321815
10.1145/1095810.1095832
10.1145/69558.69562
10.1145/1248648.1248656
ContentType Journal Article
Copyright Owner/Author
Copyright_xml – notice: Owner/Author
DBID AAYXX
CITATION
DOI 10.1145/3632880
DatabaseName CrossRef
DatabaseTitle CrossRef
DatabaseTitleList CrossRef

DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 2475-1421
EndPage 1149
ExternalDocumentID 10_1145_3632880
3632880
GrantInformation_xml – fundername: National Science Foundation
  grantid: CCF-1901381,CCF-2115104,CCF-2119352,CCF-2107241
  funderid: https://doi.org/10.13039/100000001
GroupedDBID AAKMM
AAYFX
ACM
AEFXT
AEJOY
AIKLT
AKRVB
ALMA_UNASSIGNED_HOLDINGS
GUFHI
LHSKQ
M~E
OK1
ROL
AAYXX
CITATION
ID FETCH-LOGICAL-a277t-df5851734b350ea12b92ca3a5db4052cbdcc45a74a0b46a0bde22a5d22c1eeca3
ISICitedReferencesCount 5
ISICitedReferencesURI http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=001170729400039&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 Sat Nov 29 07:45:08 EST 2025
Tue Nov 18 22:32:35 EST 2025
Mon Jul 07 16:40:28 EDT 2025
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Issue POPL
Keywords parallel programming languages
granularity control
compilers
Language English
License This work is licensed under a Creative Commons Attribution International 4.0 License.
LinkModel OpenURL
MergedId FETCHMERGED-LOGICAL-a277t-df5851734b350ea12b92ca3a5db4052cbdcc45a74a0b46a0bde22a5d22c1eeca3
ORCID 0000-0002-2623-4986
0000-0002-4194-7618
0000-0003-2848-9808
0009-0002-9659-1636
OpenAccessLink https://dl.acm.org/doi/10.1145/3632880
PageCount 32
ParticipantIDs crossref_citationtrail_10_1145_3632880
crossref_primary_10_1145_3632880
acm_primary_3632880
PublicationCentury 2000
PublicationDate 2024-01-02
PublicationDateYYYYMMDD 2024-01-02
PublicationDate_xml – month: 01
  year: 2024
  text: 2024-01-02
  day: 02
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 2024
Publisher ACM
Publisher_xml – name: ACM
References (bib43) 2016
(bib69) 1997
(bib18) 1999; 46
(bib62) 2008
(bib63) 2016
(bib49) 1996
(bib6) 2011
(bib73) 2012
(bib20) 1974; 21
(bib22) 2005
(bib56) 2017
(bib64) 2023
(bib84) 2022
(bib26) 1989; 38
(bib10) 2001; 34
(bib54) 2020
(bib19) 2009
(bib29) 1997
(bib50) 2011
(bib79) 2014; 36
(bib38) 1984
(bib70) 2017
(bib80) 2016
(bib4) 2002; 35
(bib81) 2006
(bib25) 2008
(bib31) 2009; 44
(bib33) 2007
(bib13) 2004
(bib59) 2019
(bib5) 2018
(bib82) 1989
(bib86) 2020
(bib67) 2012
(bib36) 2018
(bib72) 2014
(bib45) 2000
(bib30) 2005
(bib83) 2022
(bib16) 2011
(bib41) 2014
(bib48) 1995
(bib28) 1993
(bib1) 2019
(bib44) 2017
(bib14) 2012; 22
(bib35) 2020
(bib24) 2008
(bib34) 1998
(bib87) 2005
(bib78) 2010
(bib12) 2021
(bib39) 2009; 44
bib52
(bib9) 2023; 7
(bib53) 1991; 2
(bib8) 2021
(bib17) 2004
(bib55) 2016
(bib27) 1999
(bib47) 2007
(bib46) 2015; 2
(bib61) 1990; 441
(bib21) 2000
(bib7) 2016
(bib74) 2009
(bib77) 2012
(bib68) 1972
(bib42) 2011
(bib51) 1991
(bib66) 2010; 6418
(bib58) 2023; 7
(bib71) 1999
(bib32) 2011; 20
(bib37) 2018
(bib40) 1994
(bib75) 2009
(bib2) 2020
(bib11) 1989; 11
(bib3) 2015
(bib15) 1996; 39
(bib57) 2018
(bib23) 1998
(bib65) 2021
(bib60) 2003
(bib76) 1998; 8
(bib85) 2020
e_1_3_1_60_1
e_1_3_1_81_1
e_1_3_1_22_1
e_1_3_1_45_1
e_1_3_1_66_1
e_1_3_1_24_1
e_1_3_1_47_1
e_1_3_1_68_1
e_1_3_1_8_1
e_1_3_1_41_1
e_1_3_1_62_1
e_1_3_1_87_1
e_1_3_1_20_1
e_1_3_1_43_1
e_1_3_1_64_1
e_1_3_1_85_1
e_1_3_1_4_1
e_1_3_1_6_1
e_1_3_1_26_1
e_1_3_1_49_1
e_1_3_1_28_1
e_1_3_1_2_1
Tzannes Alexandros (e_1_3_1_78_1) 2012
e_1_3_1_72_1
e_1_3_1_70_1
Fineman Jeremy T. (e_1_3_1_31_1) 2005
e_1_3_1_34_1
e_1_3_1_55_1
e_1_3_1_36_1
e_1_3_1_57_1
e_1_3_1_13_1
e_1_3_1_30_1
e_1_3_1_51_1
e_1_3_1_76_1
e_1_3_1_11_1
e_1_3_1_32_1
e_1_3_1_53_1
e_1_3_1_74_1
e_1_3_1_17_1
e_1_3_1_15_1
e_1_3_1_38_1
e_1_3_1_59_1
e_1_3_1_19_1
e_1_3_1_82_1
e_1_3_1_61_1
e_1_3_1_80_1
e_1_3_1_44_1
e_1_3_1_67_1
e_1_3_1_23_1
e_1_3_1_69_1
e_1_3_1_88_1
e_1_3_1_25_1
e_1_3_1_46_1
e_1_3_1_9_1
e_1_3_1_63_1
e_1_3_1_86_1
e_1_3_1_42_1
e_1_3_1_65_1
e_1_3_1_21_1
e_1_3_1_5_1
Hiraishi Tasuku (e_1_3_1_40_1) 2009; 44
e_1_3_1_7_1
e_1_3_1_27_1
e_1_3_1_48_1
e_1_3_1_3_1
e_1_3_1_29_1
Westrick Sam (e_1_3_1_84_1) 2022
e_1_3_1_71_1
Weening Joseph S. (e_1_3_1_83_1) 1989
e_1_3_1_50_1
e_1_3_1_10_1
Fluet Matthew (e_1_3_1_33_1) 2011; 20
e_1_3_1_56_1
e_1_3_1_79_1
e_1_3_1_35_1
e_1_3_1_58_1
e_1_3_1_77_1
e_1_3_1_14_1
e_1_3_1_52_1
e_1_3_1_75_1
e_1_3_1_12_1
e_1_3_1_54_1
e_1_3_1_73_1
e_1_3_1_18_1
e_1_3_1_16_1
e_1_3_1_37_1
e_1_3_1_39_1
References_xml – start-page: 355
  year: 2018
  end-page: 368
  ident: bib37
  article-title: An Evaluation of Asynchronous Software Events on Modern Hardware
  publication-title: 2018 IEEE 26th International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems (MASCOTS)
  doi: 10.1109/MASC0TS.2018.00041
– start-page: 75
  year: 2014
  end-page: 86
  ident: bib41
  article-title: Habanero-Java library: a Java 8 framework for multicore programming
  publication-title: 2014 International Conference on Principles and Practices of Programming on the Java Platform Virtual Machines, Languages and Tools, PPPJ ’14
– start-page: 9
  year: 1984
  end-page: 17
  ident: bib38
  publication-title: Proceedings of the 1984 ACM Symposium on LISP and functional programming
– start-page: 56
  year: 2000
  end-page: 71
  ident: bib21
  article-title: Flow-directed Closure Conversion for Typed Languages
  publication-title: European Symposium on Programming
– start-page: 1249
  year: 2021
  end-page: 1263
  ident: bib12
  publication-title: Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation
  doi: 10.1145/3453483.3454107
– start-page: 769
  year: 2018
  end-page: 782
  ident: bib5
  publication-title: Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation
– start-page: 97
  year: 2009
  end-page: 116
  ident: bib19
  publication-title: Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
– year: 1989
  ident: bib82
  publication-title: Parallel Execution of Lisp Programs
– volume: 7
  start-page: 1558
  issue: PLDI
  year: 2023
  end-page: 1583
  ident: bib9
  article-title: Efficient Parallel Functional Programming with Effects
  publication-title: Proc. ACM Program. Lang.
  doi: 10.1145/3591284
– start-page: 207
  year: 2008
  end-page: 216
  ident: bib24
  publication-title: Proc. 20th ACM Symposium on Parallelism in Algorithms and Architectures
– start-page: 167
  year: 2003
  end-page: 178
  ident: bib60
  publication-title: Proceedings of the ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPOPP 2003, June 11-13, 2003, San Diego, CA, USA
– start-page: 519
  year: 2005
  end-page: 538
  ident: bib22
  publication-title: Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
– volume: 2
  start-page: 17:1
  issue: 3
  year: 2015
  end-page: 17:42
  ident: bib46
  article-title: On-the-Fly Pipeline Parallelism
  publication-title: TOPC
– start-page: 1
  year: 1999
  end-page: 23
  ident: bib71
  article-title: Distance: A new metric for controlling granularity for parallel execution
  publication-title: Journal of Functional and Logic Programming
– volume: 20
  start-page: 1
  issue: 5-6
  year: 2011
  end-page: 40
  ident: bib32
  article-title: Implicitly threaded parallelism in Manticore
  publication-title: Journal of Functional Programming
– start-page: 71
  year: 2016
  end-page: 82
  ident: bib55
  article-title: Latency-Hiding Work Stealing: Scheduling Interacting Parallel Computations with Work Stealing
  publication-title: 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
– start-page: 217
  year: 2020
  end-page: 231
  ident: bib86
  publication-title: PPoPP ’20: 25th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, San Diego, California, USA, February 22-26, 2020
  doi: 10.1145/3332466.3374536
– start-page: 208
  year: 1999
  end-page: 219
  ident: bib27
  article-title: Static Interpretation of Modules
  publication-title: International Conference on Functional Programming
– start-page: 355
  year: 2011
  end-page: 366
  ident: bib16
  article-title: Scheduling irregular parallel computations on hierarchical caches
  publication-title: Proc. ACM Symposium on Parallelism in Algorithms and Architectures (SPAA).
– start-page: 1
  year: 1997
  end-page: 11
  ident: bib29
  article-title: Efficient Detection of Determinacy Races in Cilk Programs
  publication-title: Proceedings of the Ninth Annual ACM Symposium on Parallel Algorithms and Architectures (SPAA)
– start-page: 107
  year: 2007
  end-page: 118
  ident: bib47
  article-title: Lightweight concurrency primitives for GHC
  publication-title: Proceedings of the ACM SIGPLAN Workshop on Haskell, Haskell 2007, Freiburg, Germany, September 30, 2007
– year: 2022
  ident: bib84
  article-title: ntanglement Detection With Near-Zero Cost
  publication-title: Proceedings of the 24th ACM SIGPLAN International Conference on Functional Programming (ICFP 2022)
– year: 2005
  ident: bib30
  publication-title: Provably Good Race Detection That Runs in Parallel
– start-page: 157
  year: 2017
  end-page: 170
  ident: bib44
  publication-title: Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2017, Barcelona, Spain, June 18-23, 2017
– year: 1998
  ident: bib23
  article-title: Detecting data races in Cilk programs that use locks
  publication-title: Proceedings of the 10th ACM Symposium on Parallel Algorithms and Architectures (SPAA ’98)
– start-page: 91
  year: 2009
  end-page: 100
  ident: bib75
  publication-title: Proceedings of the Twenty-first Annual Symposium on Parallelism in Algorithms and Architectures
– volume: 44
  start-page: 55
  issue: 4
  year: 2009
  end-page: 64
  ident: bib39
  article-title: Backtracking-based load balancing
  publication-title: Proceedings of the 2009 ACM SIGPLAN Symposium on Principles & Practice of Parallel Programming
– volume: 7
  start-page: 712
  issue: PLDI
  year: 2023
  end-page: 735
  ident: bib58
  article-title: Responsive Parallelism with Synchronization
  publication-title: Proc. ACM Program. Lang.
– year: 1997
  ident: bib69
  article-title: Eraser: A Dynamic Race Detector for Multi-Threaded Programs
  publication-title: Proceedings of the Sixteenth ACM Symposium on Operating Systems Principles (SOSP)
– year: 2022
  ident: bib83
  publication-title: Efficient and Scalable Parallel Functional Programming Through Disentanglement
– start-page: 249
  year: 2017
  end-page: 265
  ident: bib70
  publication-title: Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming
  doi: 10.1145/3018743.3018758
– start-page: 37
  year: 2007
  end-page: 44
  ident: bib33
  publication-title: Proceedings of the 2007 Workshop on Declarative Aspects of Multicore Programming
– ident: bib52
  publication-title: MLton web site
– volume: 441
  start-page: 182
  year: 1990
  end-page: 199
  ident: bib61
  publication-title: Parallel Lisp: Languages and Systems
– start-page: 179
  year: 1993
  end-page: 187
  ident: bib28
  publication-title: Proceedings of the conference on Functional programming languages and computer architecture (FPCA ’93)
– volume: 44
  start-page: 121
  issue: 6
  year: 2009
  end-page: 133
  ident: bib31
  article-title: FastTrack: efficient and precise dynamic race detection
  publication-title: SIGPLAN Not
  doi: 10.1145/1543135.1542490
– volume: 8
  start-page: 367
  issue: 4
  year: 1998
  end-page: 412
  ident: bib76
  article-title: From ML to Ada: Strongly-Typed Language Interoperability via Source Translation
  publication-title: Journal of Functional Programming
– start-page: 79
  year: 1994
  end-page: 90
  ident: bib40
  publication-title: Proceedings of the 1994 ACM Conference on LISP and Functional Programming
– volume: 46
  start-page: 720
  issue: 5
  year: 1999
  end-page: 748
  ident: bib18
  article-title: Scheduling multithreaded computations by work stealing
  publication-title: J. ACM
– year: 2020
  ident: bib2
  publication-title: MPL: A High-Performance Compiler for Parallel ML
– volume: 11
  start-page: 598
  issue: 4
  year: 1989
  end-page: 632
  ident: bib11
  article-title: I-structures: Data Structures for Parallel Computing
  publication-title: ACM Trans. Program. Lang. Syst.
– start-page: 214
  year: 2019
  end-page: 228
  ident: bib1
  publication-title: Proceedings of the 24th Symposium on Principles and Practice of Parallel Programming
  doi: 10.1145/3293883.3295725
– volume: 2
  start-page: 264
  issue: 3
  year: 1991
  end-page: 280
  ident: bib53
  article-title: Lazy task creation: a technique for increasing the granularity of parallel programs
  publication-title: IEEE Transactions on Parallel and Distributed Systems
– start-page: 387
  year: 2012
  end-page: 400
  ident: bib73
  publication-title: Proceedings of the 39th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2012, Philadelphia, Pennsylvania, USA, January 22-28, 2012
– year: 2021
  ident: bib65
  publication-title: Proceedings of the 42nd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’21)
– start-page: 383
  year: 2008
  end-page: 414
  ident: bib62
  article-title: Harnessing the Multicores: Nested Data Parallelism in Haskell
  publication-title: FSTTCS
– start-page: 1
  year: 1995
  end-page: 10
  ident: bib48
  article-title: On the granularity of divide-and-conquer parallelism
  publication-title: Proceedings of the 1995 Glasgow Workshop on Functional Programming
– start-page: 179
  year: 2010
  end-page: 190
  ident: bib78
  article-title: Lazy binary-splitting: a run-time adaptive work-stealing scheduler
  publication-title: PPoPP ’10
– start-page: 18
  year: 2016
  end-page: 32
  ident: bib7
  article-title: Dag-calculus: A Calculus for Parallel Computation
  publication-title: Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming (ICFP 2016)
– start-page: 81
  year: 2018
  end-page: 93
  ident: bib36
  article-title: Hierarchical memory management for mutable state
  publication-title: Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPoPP, Vienna, Austria, February 24-28, 2018
– start-page: 133
  year: 2004
  end-page: 144
  ident: bib13
  article-title: On-the-Fly Maintenance of Series-Parallel Relationships in Fork-Join Multithreaded Programs
  publication-title: 16th Annual ACM Symposium on Parallel Algorithms and Architectures
– volume: 21
  start-page: 201
  issue: 2
  year: 1974
  end-page: 206
  ident: bib20
  article-title: The parallel evaluation of general arithmetic expressions
  publication-title: J. ACM
– start-page: 677
  year: 2017
  end-page: 692
  ident: bib56
  publication-title: Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation
– start-page: 1
  year: 2014
  end-page: 62
  ident: bib72
  article-title: MultiMLton: A multicore-aware runtime for standard ML
  publication-title: Journal of Functional Programming
– volume: 6418
  start-page: 368
  year: 2010
  end-page: 383
  ident: bib66
  publication-title: Runtime Verification
– year: 2021
  ident: bib8
  article-title: Provably Space Efficient Parallel Functional Programming
  publication-title: Proceedings of the 48th Annual ACM Symposium on Principles of Programming Languages (POPL)"
– year: 2012
  ident: bib77
  publication-title: Enhancing Productivity and Performance Portability of General-Purpose Parallel Programming
– year: 2020
  ident: bib85
  article-title: Disentanglement in Nested-Parallel Programs
  publication-title: Proceedings of the 47th Annual ACM Symposium on Principles of Programming Languages (POPL)"
– start-page: 499
  year: 2011
  end-page: 518
  ident: bib6
  article-title: Oracle Scheduling: Controlling Granularity in Implicitly Parallel Languages
  publication-title: ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA)
– volume: 39
  start-page: 85
  issue: 3
  year: 1996
  end-page: 97
  ident: bib15
  article-title: Programming Parallel Algorithms
  publication-title: Commun. ACM
– year: 2004
  ident: bib17
  publication-title: SPAA
– volume: 38
  start-page: 408
  issue: 3
  year: 1989
  end-page: 423
  ident: bib26
  article-title: Speedup versus efficiency in parallel systems
  publication-title: IEEE Transactions on Computing
– start-page: 1
  year: 2008
  end-page: 11
  ident: bib25
  article-title: An adaptive cut-off for task parallelism
  publication-title: 2008 SC - International Conference for High Performance Computing, Networking, Storage and Analysis
– start-page: 36
  year: 2000
  end-page: 43
  ident: bib45
  publication-title: Proceedings of the ACM 2000 conference on Java Grande
– year: 2018
  ident: bib57
  article-title: Types and Cost Models for Responsive Parallelism
  publication-title: Proceedings of the 14th ACM SIGPLAN International Conference on Functional Programming (ICFP ’18)
– start-page: 1
  year: 2006
  end-page: 1
  ident: bib81
  publication-title: ML ’06: Proceedings of the 2006 workshop on ML
– start-page: 139
  year: 2016
  end-page: 150
  ident: bib43
  publication-title: Proceedings of the 2016 International Conference on Parallel Architectures and Compilation
– start-page: 24
  year: 1991
  end-page: 33
  ident: bib51
  article-title: On-the-fly Detection of Data Races for Programs with Nested Fork-Join Parallelism
  publication-title: Proceedings of Supercomputing’91
– start-page: 212
  year: 1998
  end-page: 223
  ident: bib34
  article-title: The Implementation of the Cilk-5 Multithreaded Language
  publication-title: PLDI
– year: 2009
  ident: bib74
  publication-title: Scheduling Deterministic Parallel Programs
– volume: 34
  start-page: 115
  issue: 2
  year: 2001
  end-page: 144
  ident: bib10
  article-title: Thread Scheduling for Multiprogrammed Multiprocessors
  publication-title: Theory of Computing Systems
– year: 2015
  ident: bib3
  article-title: Coupling Memory and Computation for Locality Management
  publication-title: Summit on Advances in Programming Languages (SNAPL)
– year: 2020
  ident: bib54
  article-title: Responsive Parallelism with Futures and State
  publication-title: Proceedings of the ACM Conference on Programming Language Design and Implementation (PLDI)
– volume: 36
  start-page: 51
  issue: 3
  year: 2014
  ident: bib79
  article-title: Lazy Scheduling: A Runtime Adaptive Scheduler for Declarative Parallelism
  publication-title: TOPLAS
– year: 2011
  ident: bib42
  publication-title: Intel Threading Building Blocks
– year: 2019
  ident: bib59
  article-title: Fairness in Responsive Parallelism
  publication-title: Proceedings of the 24th ACM SIGPLAN International Conference on Functional Programming (ICFP 2019)
– start-page: 1
  year: 2020
  end-page: 15
  ident: bib35
  article-title: Compiler-Based Timing For Extremely Fine-Grain Preemptive Parallelism
  publication-title: SC20: International Conference for High Performance Computing, Networking, Storage and Analysis
  doi: 10.1109/SC41405.2020.00057
– start-page: 221
  year: 2005
  end-page: 234
  ident: bib87
  publication-title: Proceedings of the 20th ACM Symposium on Operating Systems Principles 2005, SOSP 2005, Brighton, UK, October 23-26, 2005
– start-page: 717
  year: 1972
  end-page: 740
  ident: bib68
  article-title: Definitional Interpreters for Higher-order Programming Languages
  publication-title: Proceedings of the 25th ACM National Conference
– start-page: 715
  issue: 4-6
  year: 1996
  end-page: 734
  ident: bib49
  article-title: A methodology for granularity-based control of parallelism in logic programs
  publication-title: Journal of Symbolic Computation
– start-page: 392
  year: 2016
  end-page: 406
  ident: bib63
  publication-title: Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming (ICFP 2016)
– volume: 35
  start-page: 321
  issue: 3
  year: 2002
  end-page: 347
  ident: bib4
  article-title: The Data Locality of Work Stealing
  publication-title: Theory of Computing Systems
– volume: 22
  start-page: 382
  issue: 4-5
  year: 2012
  end-page: 438
  ident: bib14
  article-title: Lazy Tree Splitting
  publication-title: J. Funct. Program.
– start-page: 83
  year: 2016
  end-page: 94
  ident: bib80
  article-title: Provably Good and Practically Efficient Parallel Race Detection for Fork-Join Programs
  publication-title: 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
– year: 2023
  ident: bib64
  publication-title: The best multicore-parallelization refactoring you’ve never heard of
– start-page: 531
  year: 2012
  end-page: 542
  ident: bib67
  article-title: Scalable and Precise Dynamic Datarace Detection for Structured Parallelism
  publication-title: Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’12)
– start-page: 21
  year: 2011
  end-page: 32
  ident: bib50
  publication-title: Proceedings of the 10th International Symposium on Memory Management, ISMM 2011, San Jose, CA, USA, June 04 - 05, 2011
– ident: e_1_3_1_48_1
  doi: 10.1145/1291201.1291217
– ident: e_1_3_1_50_1
  doi: 10.1006/jsco.1996.0038
– ident: e_1_3_1_14_1
  doi: 10.1145/1007912.1007933
– ident: e_1_3_1_72_1
– volume-title: Efficient and Scalable Parallel Functional Programming Through Disentanglement
  year: 2022
  ident: e_1_3_1_84_1
– ident: e_1_3_1_2_1
  doi: 10.1145/3293883.3295725
– volume: 44
  start-page: 55
  issue: 4
  year: 2009
  ident: e_1_3_1_40_1
  article-title: Backtracking-based load balancing
  publication-title: Proceedings of the 2009 ACM SIGPLAN Symposium on Principles & Practice of Parallel Programming
– ident: e_1_3_1_22_1
  doi: 10.1007/3-540-46425-5_4
– ident: e_1_3_1_10_1
  doi: 10.1145/3591284
– ident: e_1_3_1_30_1
  doi: 10.1145/258492.258493
– ident: e_1_3_1_52_1
  doi: 10.1145/125826.125861
– ident: e_1_3_1_79_1
  doi: 10.1145/1693453.1693479
– volume-title: Provably Good Race Detection That Runs in Parallel
  year: 2005
  ident: e_1_3_1_31_1
– ident: e_1_3_1_63_1
  doi: 10.1007/978-3-540-89330-1_10
– ident: e_1_3_1_8_1
  doi: 10.1145/2951913.2951946
– ident: e_1_3_1_82_1
  doi: 10.1145/1159876.1159877
– ident: e_1_3_1_13_1
  doi: 10.1145/3453483.3454107
– ident: e_1_3_1_20_1
  doi: 10.1145/1640089.1640097
– volume: 20
  start-page: 1
  issue: 5
  year: 2011
  ident: e_1_3_1_33_1
  article-title: Implicitly threaded parallelism in Manticore
  publication-title: Journal of Functional Programming
– ident: e_1_3_1_5_1
  doi: 10.1007/s00224-002-1057-3
– ident: e_1_3_1_46_1
  doi: 10.1145/337449.337465
– ident: e_1_3_1_49_1
– ident: e_1_3_1_43_1
– ident: e_1_3_1_74_1
  doi: 10.1145/2103656.2103702
– ident: e_1_3_1_51_1
  doi: 10.1145/1993478.1993482
– ident: e_1_3_1_4_1
– ident: e_1_3_1_42_1
  doi: 10.1145/2647508.2647514
– ident: e_1_3_1_16_1
  doi: 10.1145/227234.227246
– ident: e_1_3_1_32_1
  doi: 10.1145/1543135.1542490
– volume-title: Enhancing Productivity and Performance Portability of General-Purpose Parallel Programming
  year: 2012
  ident: e_1_3_1_78_1
– ident: e_1_3_1_87_1
  doi: 10.1145/3332466.3374536
– ident: e_1_3_1_35_1
  doi: 10.1145/277650.277725
– ident: e_1_3_1_44_1
  doi: 10.1145/2967938.2967968
– ident: e_1_3_1_73_1
  doi: 10.1017/S0956796814000161
– ident: e_1_3_1_25_1
  doi: 10.1145/1378533.1378574
– ident: e_1_3_1_19_1
  doi: 10.1145/324133.324234
– ident: e_1_3_1_71_1
  doi: 10.1145/3018743.3018758
– ident: e_1_3_1_7_1
  doi: 10.1145/2048066.2048106
– ident: e_1_3_1_60_1
  doi: 10.1145/3341685
– ident: e_1_3_1_65_1
– ident: e_1_3_1_36_1
  doi: 10.1109/SC41405.2020.00057
– ident: e_1_3_1_15_1
  doi: 10.1017/S0956796812000172
– ident: e_1_3_1_57_1
  doi: 10.1145/3062341.3062370
– ident: e_1_3_1_62_1
  doi: 10.1007/BFb0024155
– volume-title: Parallel Execution of Lisp Programs
  year: 1989
  ident: e_1_3_1_83_1
– ident: e_1_3_1_39_1
  doi: 10.1145/800055.802017
– ident: e_1_3_1_86_1
  doi: 10.1145/3371115
– ident: e_1_3_1_23_1
  doi: 10.1145/1094811.1094852
– ident: e_1_3_1_41_1
  doi: 10.1145/182409.182442
– ident: e_1_3_1_9_1
  doi: 10.1145/3434299
– ident: e_1_3_1_53_1
– ident: e_1_3_1_27_1
  doi: 10.1109/12.21127
– ident: e_1_3_1_55_1
  doi: 10.1145/3385412.3386013
– ident: e_1_3_1_11_1
  doi: 10.1007/s002240011004
– ident: e_1_3_1_76_1
  doi: 10.1145/1583991.1584019
– ident: e_1_3_1_37_1
  doi: 10.1145/3178487.3178494
– ident: e_1_3_1_70_1
– ident: e_1_3_1_56_1
  doi: 10.1145/2935764.2935793
– ident: e_1_3_1_18_1
  doi: 10.1145/1007912.1007948
– ident: e_1_3_1_75_1
– ident: e_1_3_1_58_1
– ident: e_1_3_1_68_1
  doi: 10.1145/2254064.2254127
– ident: e_1_3_1_69_1
  doi: 10.1145/800194.805852
– ident: e_1_3_1_6_1
  doi: 10.1145/3192366.3192391
– ident: e_1_3_1_59_1
  doi: 10.1145/3591249
– ident: e_1_3_1_67_1
  doi: 10.1007/978-3-642-16612-9_28
– ident: e_1_3_1_45_1
  doi: 10.1145/3062341.3062374
– ident: e_1_3_1_81_1
  doi: 10.1145/2935764.2935801
– ident: e_1_3_1_66_1
  doi: 10.1145/3453483.3460969
– ident: e_1_3_1_38_1
  doi: 10.1109/MASC0TS.2018.00041
– ident: e_1_3_1_28_1
  doi: 10.1145/317636.317800
– ident: e_1_3_1_80_1
  doi: 10.1145/2629643
– ident: e_1_3_1_24_1
  doi: 10.1145/277651.277696
– ident: e_1_3_1_64_1
  doi: 10.1145/2951913.2951935
– ident: e_1_3_1_85_1
  doi: 10.1145/3547646
– ident: e_1_3_1_54_1
  doi: 10.1109/71.86103
– ident: e_1_3_1_61_1
  doi: 10.1145/781498.781528
– ident: e_1_3_1_47_1
  doi: 10.1145/2809808
– ident: e_1_3_1_29_1
  doi: 10.1145/165180.165205
– ident: e_1_3_1_3_1
– ident: e_1_3_1_17_1
  doi: 10.1145/1989493.1989553
– ident: e_1_3_1_26_1
  doi: 10.1109/SC.2008.5213927
– ident: e_1_3_1_77_1
  doi: 10.1017/S0956796898003086
– ident: e_1_3_1_21_1
  doi: 10.1145/321812.321815
– ident: e_1_3_1_88_1
  doi: 10.1145/1095810.1095832
– ident: e_1_3_1_12_1
  doi: 10.1145/69558.69562
– ident: e_1_3_1_34_1
  doi: 10.1145/1248648.1248656
SSID ssj0001934839
Score 2.289555
Snippet On any modern computer architecture today, parallelism comes with a modest cost, born from the creation and management of threads or tasks. Today, programmers...
SourceID crossref
acm
SourceType Enrichment Source
Index Database
Publisher
StartPage 1118
SubjectTerms Compilers
Functional languages
Parallel programming languages
Procedures, functions and subroutines
Software and its engineering
SubjectTermsDisplay Software and its engineering -- Compilers
Software and its engineering -- Functional languages
Software and its engineering -- Parallel programming languages
Software and its engineering -- Procedures, functions and subroutines
Title Automatic Parallelism Management
URI https://dl.acm.org/doi/10.1145/3632880
Volume 8
WOSCitedRecordID wos001170729400039&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
  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/eLvHCXMwtV1LS8QwEA6-Dl58i-uLHsSLVLdJummOiygeXC2o4G1J0hREtytrV_bkb3fSpG1YPOjBSyjtkNJ-6XRmMjMfQieJ7oooEjjMe3kegv_FQympCrUimSSxkliqimyC3d0lz888dXz3HxWdACuKZDbj7_8KNZwDsE3p7B_gbiaFE3AMoMMIsMP4K-D703Js-7CmYmKYUt4MD8ZcmoszR9Pm91VldPQvB2bzwOVsjUwUoY5nNqa3oaKZOPr1BzFq8Z9qV_xTEYj7-0c2Kj54eW2Xl7J53U-jaXnWP_dDD5hWoQfsLRaXzl6pK0xZHEbU1jvXujXxllB6n956qhKUbOL9dsEv4z-rdGq6X5AewYnlfJrrj-2uLKJlzGJusvoGX16YjRMKNqAtlzZzXTh5Y42okWeNeGbF4wZac_5A0Lc4bqIFXWyh9ZprI3CqdxsFDayBB2vQwrqDnq6vHi9vQsduEQrMWBlmudmRZYTCJ9HVIsKSYyWIiDMJRjRWMlOKxoJR0ZW0B0OmMYarGKtIa5DcRUvFuNB7KJA6BzcWDAvwPangRCqWy16isGZEKM07aAuedfhu-5cM3RvooNP62YfKNYQ3vCRvQ1usHreCQSNYzzEnsv_jHQ7QartsDtFSOZnqI7SiPsuXj8lxBdQ3fDhLLQ
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=Automatic+Parallelism+Management&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Westrick%2C+Sam&rft.au=Fluet%2C+Matthew&rft.au=Rainey%2C+Mike&rft.au=Acar%2C+Umut+A.&rft.date=2024-01-02&rft.pub=ACM&rft.eissn=2475-1421&rft.volume=8&rft.issue=POPL&rft.spage=1118&rft.epage=1149&rft_id=info:doi/10.1145%2F3632880&rft.externalDocID=3632880
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