Disentanglement in nested-parallel programs
Disentanglement in nested-parallel programs
复制标题
嵌套并行程序中的解开
DOI:
10.1145/3371115
复制
发表时间:
2020
期刊:
影响因子:
--
通讯作者:
Acar, U
中科院分区:
文献类型:
--
作者:
Westrick, S;Yadav, R;Fluet, M;Acar, U
Nested parallelism has proved to be a popular approach for programming the rapidly expanding range of multicore computers. It allows programmers to express parallelism at a high level and relies on a run-time system and a scheduler to deliver efficiency and scalability. As a result, many programming languages and extensions that support nested parallelism have been developed, including in C/C++, Java, Haskell, and ML. Yet, writing efficient and scalable nested parallel programs remains challenging, primarily due to difficult concurrency bugs arising from destructive updates or effects. For decades, researchers have argued that functional programming can simplify writing parallel programs by allowing more control over effects but functional programs continue to underperform in comparison to parallel programs written in lower-level languages. The fundamental difficulty with functional languages is that they have high demand for memory, and this demand only grows with parallelism.In this paper, we identify a memory property, called disentanglement, of nested-parallel programs, and propose memory management techniques for improved efficiency and scalability. Disentanglement allows for (destructive) effects as long as concurrently executing threads do not gain knowledge of the memory objects allocated by each other. We formally define disentanglement by considering an ML-like higher-order language with mutable references and presenting a dynamic semantics for it that enables reasoning about computation graphs of nested parallel programs. Based on this graph semantics, we formalize a classic correctness property---determinacy race freedom---and prove that it implies disentanglement. This establishes that disentanglement applies to a relatively broad class of parallel programs. We then propose memory management techniques for nested-parallel programs that take advantage of disentanglement for improved efficiency and scalability. We show that these techniques are practical by extending the MLton compiler for Standard ML to support this form of nested parallelism. Our empirical evaluation shows that our techniques are efficient and scale well.
登录
查看更多内容
DOI:
10.1145/2935764.2935801
发表时间:
2016
期刊:
Proceedings of the 28th ACM Symposium on Parallelism in Algorithms and Architectures
影响因子:
--
作者:
Utterback, Robert;Agrawal, Kunal;Fineman, Jeremy T.;Lee, I-Ting Angelina
通讯作者:
Lee, I-Ting Angelina
DOI:
10.1145/3062341.3062370
发表时间:
2017
期刊:
Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation
影响因子:
--
作者:
Stefan K. Muller;Umut A. Acar;R. Harper
通讯作者:
R. Harper
DOI:
10.4230/lipics.snapl.2015.1
发表时间:
2015
期刊:
ACM Trans. Program. Lang. Syst.
影响因子:
--
作者:
Umut A. Acar;G. Blelloch;M. Fluet;Stefan K. Muller;R. Raghunathan
通讯作者:
R. Raghunathan
DOI:
10.1145/2807591.2807651
发表时间:
2015
期刊:
SC15: International Conference for High Performance Computing, Networking, Storage and Analysis
影响因子:
--
作者:
Umut A. Acar;A. Charguéraud;Mike Rainey
通讯作者:
Mike Rainey
DOI:
10.7591/cornell/9781501738494.003.0044
发表时间:
2019
期刊:
Architects
影响因子:
--
作者:
Thomas Yarrow
通讯作者:
Thomas Yarrow