Efficient Parallel Self-Adjusting Computation

  title={Efficient Parallel Self-Adjusting Computation},
  author={Daniel Anderson and Guy E. Blelloch and Anubhav Baweja and Umut A. Acar},
  journal={Proceedings of the 33rd ACM Symposium on Parallelism in Algorithms and Architectures},
Self-adjusting computation is an approach for automatically producing dynamic algorithms from static ones. It works by tracking control and data dependencies, and propagating changes through the dependencies when making an update. Extensively studied in the sequential setting, some results on parallel self-adjusting computation exist, but are only applicable to limited classes of computations, or are ad-hoc systems with no theoretical analysis of their performance. In this paper, we present the… Expand

Figures and Tables from this paper


A proposal for parallel self-adjusting computation
Techniques for writing parallel self-adjusting programs and a change propagation algorithm that can update computations in parallel are described and preliminary experimental results are presented. Expand
Two for the price of one: a model for parallel and incremental computation
This work presents a novel algorithm for parallel self-adjusting computation that extends a deterministic parallel programming model with support for recording and repeating computations and describes programming techniques that proved particularly useful to improve the performance of self- adjustment in practice. Expand
An experimental analysis of self-adjusting computation
This article realizes a duality between dynamic dependence graphs and memoization, and combine them to give a change-propagation algorithm that can dramatically increase computation reuse, and refers to this approach as self-adjusting computation. Expand
Functional programming for dynamic and large data with self-adjusting computation
This work presents a type system for precise dependency tracking that minimizes the time and space for storing dependency metadata, and shows a probabilistic-chunking technique to further decrease space usage by controlling the fundamental space-time tradeoff in self-adjusting computation. Expand
Self-adjusting computation
  • R. Harper
  • Computer Science
  • Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science, 2004.
  • 2004
Self-adjusting computation is a method for deriving a dynamic algorithm for a problem by "dynamizing" a static algorithm for it. Expand
Parallelism in dynamic well-spaced point sets
This paper parallelizes a dynamic algorithm for well-spaced point sets, an important problem related to mesh refinement in computational geometry, and describes techniques for implementing the algorithm on modern multi-core computers and provides a prototype implementation. Expand
Traceable data types for self-adjusting computation
A semantics for tracing is developed, an existing self-adjusting language, ΔML, and its implementation are extended to support traceable data types, and an experimental evaluation is presented by considering a number of benchmarks. Expand
Kinetic Algorithms Via Self-adjusting Computation
This paper describes a technique for syntactically transforming static algorithms into kinetic algorithms, which compute properties of moving objects, and implements a library for performing the transformation, transform a number of algorithms, and gives an experimental evaluation. Expand
Type-directed automatic incrementalization
A significant step towards solving the problem of automatic incrementalization is described: a programming language and a compiler that can, given a few type annotations describing what can change over time, compile a conventional program that assumes its data to be static to an incremental program. Expand
Adaptive functional programming
A general mechanism for adaptive computing that enables one to make any purely-functional program adaptive is proposed and it is shown that the mechanism is practical by giving an efficient implementation as a small ML library. Expand