This paper introduces hyperobjects, a linguistic mechanism that allows different branches of a multithreaded program to maintain coordinated local views of the same nonlocal variable. We have identified three kinds of hyperobjects that seem to be useful -- reducers, holders, and splitters -- and we have implemented reducers and holders in Cilk++, a set of extensions to the C++ programming language that enables "dynamic" multithreaded programming in the style of MIT Cilk. We analyze a randomized locking methodology for reducers and show that a work-stealing scheduler can support reducers without incurring significant overhead.
%0 Conference Paper
%1 Frigo:2009:ROC
%A Frigo, Matteo
%A Halpern, Pablo
%A Leiserson, Charles E.
%A Lewin-Berlin, Stephen
%B Proceedings of the Twenty-first Annual Symposium on Parallelism in Algorithms and Architectures
%D 2009
%I ACM
%K Cilk Concurrency Coordination Hyperobjects Safety SharedState
%P 79--90
%R 10.1145/1583991.1584017
%T Reducers and Other Cilk++ Hyperobjects
%X This paper introduces hyperobjects, a linguistic mechanism that allows different branches of a multithreaded program to maintain coordinated local views of the same nonlocal variable. We have identified three kinds of hyperobjects that seem to be useful -- reducers, holders, and splitters -- and we have implemented reducers and holders in Cilk++, a set of extensions to the C++ programming language that enables "dynamic" multithreaded programming in the style of MIT Cilk. We analyze a randomized locking methodology for reducers and show that a work-stealing scheduler can support reducers without incurring significant overhead.
%@ 978-1-60558-606-9
@inproceedings{Frigo:2009:ROC,
abstract = {This paper introduces hyperobjects, a linguistic mechanism that allows different branches of a multithreaded program to maintain coordinated local views of the same nonlocal variable. We have identified three kinds of hyperobjects that seem to be useful -- reducers, holders, and splitters -- and we have implemented reducers and holders in Cilk++, a set of extensions to the C++ programming language that enables "dynamic" multithreaded programming in the style of MIT Cilk. We analyze a randomized locking methodology for reducers and show that a work-stealing scheduler can support reducers without incurring significant overhead.},
acmid = {1584017},
added-at = {2016-06-28T10:10:38.000+0200},
author = {Frigo, Matteo and Halpern, Pablo and Leiserson, Charles E. and Lewin-Berlin, Stephen},
biburl = {https://www.bibsonomy.org/bibtex/290a2c8ca3381dac7bb3e63c08870a945/gron},
booktitle = {Proceedings of the Twenty-first Annual Symposium on Parallelism in Algorithms and Architectures},
description = {Reducers and other Cilk++ hyperobjects},
doi = {10.1145/1583991.1584017},
interhash = {d1d0d43c7578ea943c333cb34bfc409f},
intrahash = {90a2c8ca3381dac7bb3e63c08870a945},
isbn = {978-1-60558-606-9},
keywords = {Cilk Concurrency Coordination Hyperobjects Safety SharedState},
location = {Calgary, AB, Canada},
numpages = {12},
pages = {79--90},
publisher = {ACM},
series = {SPAA '09},
timestamp = {2016-06-28T10:10:38.000+0200},
title = {Reducers and Other Cilk++ Hyperobjects},
year = 2009
}