English

Getting to the Point. Index Sets and Parallelism-Preserving Autodiff for Pointful Array Programming

Programming Languages 2021-04-13 v1

Abstract

We present a novel programming language design that attempts to combine the clarity and safety of high-level functional languages with the efficiency and parallelism of low-level numerical languages. We treat arrays as eagerly-memoized functions on typed index sets, allowing abstract function manipulations, such as currying, to work on arrays. In contrast to composing primitive bulk-array operations, we argue for an explicit nested indexing style that mirrors application of functions to arguments. We also introduce a fine-grained typed effects system which affords concise and automatically-parallelized in-place updates. Specifically, an associative accumulation effect allows reverse-mode automatic differentiation of in-place updates in a way that preserves parallelism. Empirically, we benchmark against the Futhark array programming language, and demonstrate that aggressive inlining and type-driven compilation allows array programs to be written in an expressive, "pointful" style with little performance penalty.

Keywords

Cite

@article{arxiv.2104.05372,
  title  = {Getting to the Point. Index Sets and Parallelism-Preserving Autodiff for Pointful Array Programming},
  author = {Adam Paszke and Daniel Johnson and David Duvenaud and Dimitrios Vytiniotis and Alexey Radul and Matthew Johnson and Jonathan Ragan-Kelley and Dougal Maclaurin},
  journal= {arXiv preprint arXiv:2104.05372},
  year   = {2021}
}

Comments

31 pages with appendix, 11 figures. A conference submission is still under review

R2 v1 2026-06-24T01:04:29.888Z