Getting to the Point. Index Sets and Parallelism-Preserving Autodiff for Pointful Array Programming
Not on the map. Why?
Abstract (arXiv)
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.
Key facts. Cited by 10 papers in the map (data through 7 Oct 2026). First posted on arXiv 12 Apr 2021.
Builds on
No reference list yet.
Built on by
Citing papers per year: 2021: 1; 2022: 2; 2023: 1; 2024: 1; 2025: 1; 2026: 4.
10 papers.
- 2024PartIR: Composing SPMD Partitioning Strategies for Machine Learningcited by 10
- 2021Decomposing reverse-mode automatic differentiationcited by 4
- 2022Machines of finite depth: towards a formalization of neural networkscited by 2
- 2026λA: A Typed Lambda Calculus for LLM Agent Compositioncited by 1
- 2022Combinatory Adjoints and Differentiationcited by 0
- 2023nablaSD: Differentiable Programming for Sparse Tensorscited by 0
- 2025Operon: Incremental Construction of Ragged Data via Named Dimensionscited by 0
- 2026A Typed Tensor Language for Shared-State Federated Computationcited by 0
- 2026Differentiate the Evaluator, Not the Program: An Efficient Runtime Representation for Neuro-Symbolic Learningcited by 0
- 2026It's All Just Vectorization: einx, a Universal Notation for Tensor Operationscited by 0
- 2026It's All Just Vectorization: einx, a Universal Notation for Tensor Operations30 Jul 2026
- 2026Differentiate the Evaluator, Not the Program: An Efficient Runtime Representation for Neuro-Symbolic Learning3 Jul 2026
- 2026A Typed Tensor Language for Shared-State Federated Computation20 May 2026
- 2026λA: A Typed Lambda Calculus for LLM Agent Composition13 Apr 2026
- 2025Operon: Incremental Construction of Ragged Data via Named Dimensions20 Nov 2025
- 2024PartIR: Composing SPMD Partitioning Strategies for Machine Learning20 Jan 2024
- 2023nablaSD: Differentiable Programming for Sparse Tensors13 Mar 2023
- 2022Combinatory Adjoints and Differentiation2 Jul 2022
- 2022Machines of finite depth: towards a formalization of neural networks27 Apr 2022
- 2021Decomposing reverse-mode automatic differentiation20 May 2021