Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing
The cilk system for parallel multithreaded computing
The cilk system for parallel multithreaded computing
Modern Operating Systems
Introduction to Algorithms
Language support for lightweight transactions
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
X10: an object-oriented approach to non-uniform cluster computing
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Optimistic parallelism requires abstractions
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Opportunistic computing: a new paradigm for scalable realism on many-cores
HotPar'09 Proceedings of the First USENIX conference on Hot topics in parallelism
Hi-index | 0.00 |
Current traditional models of parallel computing rely on the static breaking-up of computation or data: multiple parallel threads independently execute different parts of the overall computation with little or no communication between them. Under current models, inter-thread communication is limited to data that carries little semantic information about the role of the thread in the overall application. Adding such knowledge and sharing it among threads would allow a collaborative model of computation. In this paper, we present a novel programming model where threads expose their internal higher order computational state allowing the construction of a global view of the program's computations, which we call the computational state tree (CST), enabling several optimizations. We discuss how the CST can be used by threads to orient the computation where it would be most useful or to re-use results already computed by other threads. We present a method to extract collaborative information from the states of threads and insert it into the CST. We implement our method through a runtime and develop an API that can be used to leverage collaboration. We demonstrate how collaboration can be used to orient the computation of a SAT solver to maximize the number of satisfiable assignments found and also how collaboration through results sharing can be used to speedup a K-Means computation.