Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2594291.2594324acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Adapton: composable, demand-driven incremental computation

Published: 09 June 2014 Publication History

Abstract

Many researchers have proposed programming languages that support incremental computation (IC), which allows programs to be efficiently re-executed after a small change to the input. However, existing implementations of such languages have two important drawbacks. First, recomputation is oblivious to specific demands on the program output; that is, if a program input changes, all dependencies will be recomputed, even if an observer no longer requires certain outputs. Second, programs are made incremental as a unit, with little or no support for reusing results outside of their original context, e.g., when reordered.
To address these problems, we present λiccdd, a core calculus that applies a demand-driven semantics to incremental computation, tracking changes in a hierarchical fashion in a novel demanded computation graph. λiccdd also formalizes an explicit separation between inner, incremental computations and outer observers. This combination ensures λiccdd programs only recompute computations as demanded by observers, and allows inner computations to be reused more liberally. We present Adapton, an OCaml library implementing λiccdd. We evaluated Adapton on a range of benchmarks, and found that it provides reliable speedups, and in many cases dramatically outperforms state-of-the-art IC approaches.

References

[1]
M. Abadi, B. W. Lampson, and J.-J. Lévy. Analysis and caching of dependencies. In ICFP, 1996.
[2]
U. A. Acar, G. E. Blelloch, M. Blume, R. Harper, and K. Tangwongsan. A library for self-adjusting computation. ENTCS, 148(2), 2006.
[3]
U. A. Acar, G. E. Blelloch, M. Blume, and K. Tangwongsan. An experimental analysis of self-adjusting computation. In PLDI, 2006.
[4]
U. A. Acar, G. E. Blelloch, and R. Harper. Adaptive functional programming. TOPLAS, 28(6), 2006.
[5]
U. A. Acar, A. Ihler, R. Mettu, and O. Sümer. Adaptive Bayesian inference. In NIPS, 2007.
[6]
U. A. Acar, G. E. Blelloch, K. Tangwongsan, and D. Türkoğlu. Robust kinetic convex hulls in 3D. In ESA, 2008.
[7]
U. A. Acar, A. Cotter, B. Hudson, and D. Türkoğlu. Dynamic well-spaced point sets. In SoCG, 2010.
[8]
R. Bellman. Dynamic Programming. Princeton Univ. Press, 1957.
[9]
M. A. Bender, R. Cole, E. D. Demaine, M. Farach-Colton, and J. Zito. Two simplified algorithms for maintaining order in a list. In ESA, 2002.
[10]
M. Carlsson. Monads for incremental computing. In ICFP, 2002.
[11]
Y. Chen, J. Dunfield, M. A. Hammer, and U. A. Acar. Implicit self-adjusting computation for purely functional programs. In ICFP, 2011.
[12]
Y. Chen, J. Dunfield, and U. A. Acar. Type-directed automatic incrementalization. In PLDI, 2012.
[13]
G. H. Cooper and S. Krishnamurthi. Embedding dynamic dataflow in a call-by-value language. In ESOP, 2006.
[14]
E. Czaplicki and S. Chong. Asynchronous functional reactive programming for GUIs. In PLDI, 2013.
[15]
P. F. Dietz and D. D. Sleator. Two algorithms for maintaining order in a list. In STOC, 1987.
[16]
J. Field and T. Teitelbaum. Incremental reduction in the lambda calculus. In LFP, 1990.
[17]
M. Hammer and U. A. Acar. Memory management for self-adjusting computation. In ISMM, 2008.
[18]
M. Hammer, U. A. Acar, M. Rajagopalan, and A. Ghuloum. A proposal for parallel self-adjusting computation. In DAMP, 2007.
[19]
M. Hammer, G. Neis, Y. Chen, and U. A. Acar. Self-adjusting stack machines. In OOPSLA, 2011.
[20]
M. A. Hammer, U. A. Acar, and Y. Chen. CEAL: a C-based language for self-adjusting computation. In PLDI, 2009.
[21]
M. A. Hammer, Y. P. Khoo, M. Hicks, and J. S. Foster. Adapton: Composable, demand-driven incremental computation. Technical Report CS-TR-5027, Computer Science Department, University of Maryland, College Park, 2014.
[22]
A. Heydon, R. Levin, and Y. Yu. Caching function calls using precise dependencies. In PLDI, 2000.
[23]
R. Hoover. Alphonse: Incremental computation as a programming abstraction. In PLDI, 1992.
[24]
R. Hoover and T. Teitelbaum. Efficient incremental evaluation of aggregate values in attribute grammars. In CC, 1986.
[25]
S. E. Hudson. Incremental attribute evaluation: A flexible algorithm for lazy update. TOPLAS, 13(3), 1991.
[26]
N. R. Krishnaswami and N. Benton. A semantic model for graphical user interfaces. In ICFP, 2011.
[27]
P. Levy. Call-by-push-value: A subsuming paradigm. In TLCA, 1999.
[28]
P. B. Levy. Call-by-push-value: A Functional/imperative Synthesis. Springer, 2003.
[29]
R. Ley-Wild. Programmable Self-Adjusting Computation. PhD thesis, Computer Science Department, Carnegie Mellon University, Oct. 2010.
[30]
R. Ley-Wild, U. A. Acar, and M. Fluet. A cost semantics for self-adjusting computation. In POPL, 2009.
[31]
R. Ley-Wild, U. A. Acar, and G. E. Blelloch. Non-monotonic self-adjusting computation. In ESOP, 2012.
[32]
Y. A. Liu and T. Teitelbaum. Systematic derivation of incremental programs. SOCP, 24(1), 1995.
[33]
J. McCarthy. A basis for a mathematical theory of computation. In P. Braffort and D. Hirschberg, editors, Computer Programming and Formal Systems. North-Holland, Amsterdam, 1963.
[34]
L. A. Meyerovich, A. Guha, J. Baskin, G. H. Cooper, M. Greenberg, A. Bromfield, and S. Krishnamurthi. Flapjax: A programming language for ajax applications. In OOPSLA, 2009.
[35]
D. Michie. "Memo" functions and machine learning. Nature, 218, 1968.
[36]
W. Pugh and T. Teitelbaum. Incremental computation via function caching. In POPL, 1989.
[37]
G. Ramalingam and T. Reps. A categorized bibliography on incremental computation. In POPL, 1993.
[38]
A. Shankar and R. Bodik. DITTO: Automatic incrementalization of data structure invariant checks (in Java). In PLDI, 2007.

Cited By

View all
  • (2025)Flo: A Semantic Foundation for Progressive Stream ProcessingProceedings of the ACM on Programming Languages10.1145/37048459:POPL(241-270)Online publication date: 9-Jan-2025
  • (2024)From Batch to Stream: Automatic Generation of Online AlgorithmsProceedings of the ACM on Programming Languages10.1145/36564188:PLDI(1014-1039)Online publication date: 20-Jun-2024
  • (2024)Interactive Abstract Interpretation with Demanded SummarizationACM Transactions on Programming Languages and Systems10.1145/364844146:1(1-40)Online publication date: 15-Feb-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '14: Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation
June 2014
619 pages
ISBN:9781450327848
DOI:10.1145/2594291
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 49, Issue 6
    PLDI '14
    June 2014
    598 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/2666356
    • Editor:
    • Andy Gill
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 09 June 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. call-by-push-value (CBPV)
  2. demanded computation graph (DCG) incremental computation
  3. laziness
  4. self-adjusting computation
  5. thunks

Qualifiers

  • Research-article

Funding Sources

Conference

PLDI '14
Sponsor:

Acceptance Rates

PLDI '14 Paper Acceptance Rate 52 of 287 submissions, 18%;
Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)57
  • Downloads (Last 6 weeks)5
Reflects downloads up to 02 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Flo: A Semantic Foundation for Progressive Stream ProcessingProceedings of the ACM on Programming Languages10.1145/37048459:POPL(241-270)Online publication date: 9-Jan-2025
  • (2024)From Batch to Stream: Automatic Generation of Online AlgorithmsProceedings of the ACM on Programming Languages10.1145/36564188:PLDI(1014-1039)Online publication date: 20-Jun-2024
  • (2024)Interactive Abstract Interpretation with Demanded SummarizationACM Transactions on Programming Languages and Systems10.1145/364844146:1(1-40)Online publication date: 15-Feb-2024
  • (2024)Pico-Programmable Neurons to Reduce Computations for Deep Neural Network AcceleratorsIEEE Transactions on Very Large Scale Integration (VLSI) Systems10.1109/TVLSI.2024.338669832:7(1216-1227)Online publication date: Jul-2024
  • (2023)ChituProceedings of the 2023 ACM Symposium on Cloud Computing10.1145/3620678.3624794(597-610)Online publication date: 30-Oct-2023
  • (2022)Incremental type-checking for free: using scope graphs to derive incremental type-checkersProceedings of the ACM on Programming Languages10.1145/35633036:OOPSLA2(424-448)Online publication date: 31-Oct-2022
  • (2022)Efficient algorithms for dynamic bidirected Dyck-reachabilityProceedings of the ACM on Programming Languages10.1145/34987246:POPL(1-29)Online publication date: 12-Jan-2022
  • (2021)Demanded abstract interpretationProceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3453483.3454044(282-295)Online publication date: 19-Jun-2021
  • (2020)Trident: Toward Distributed Reactive SDN Programming With Consistent UpdatesIEEE Journal on Selected Areas in Communications10.1109/JSAC.2020.299965438:7(1322-1334)Online publication date: Jul-2020
  • (2019)Shadow models: incremental transformations for MPSProceedings of the 12th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3357766.3359528(61-65)Online publication date: 20-Oct-2019
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media