TL;DR
This paper introduces a new array programming language that combines high-level clarity with low-level efficiency, supporting parallel automatic differentiation and explicit nested indexing.
Contribution
It proposes a novel language design that treats arrays as functions on index sets, with a typed effects system enabling parallel in-place updates and reverse-mode autodiff.
Findings
Benchmarking against Futhark shows competitive performance.
Explicit nested indexing improves expressiveness without performance loss.
Typed effects facilitate automatic parallelism in array updates.
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
