Using Rewrite Strategies for Efficient Functional Automatic Differentiation

07/05/2023
by   Timon Böhler, et al.
0

Automatic Differentiation (AD) has become a dominant technique in ML. AD frameworks have first been implemented for imperative languages using tapes. Meanwhile, functional implementations of AD have been developed, often based on dual numbers, which are close to the formal specification of differentiation and hence easier to prove correct. But these papers have focussed on correctness not efficiency. Recently, it was shown how an approach using dual numbers could be made efficient through the right optimizations. Optimizations are highly dependent on order, as one optimization can enable another. It can therefore be useful to have fine-grained control over the scheduling of optimizations. One method expresses compiler optimizations as rewrite rules, whose application can be combined and controlled using strategy languages. Previous work describes the use of term rewriting and strategies to generate high-performance code in a compiler for a functional language. In this work, we implement dual numbers AD in a functional array programming language using rewrite rules and strategy combinators for optimization. We aim to combine the elegance of differentiation using dual numbers with a succinct expression of the optimization schedule using a strategy language. We give preliminary evidence suggesting the viability of the approach on a micro-benchmark.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
07/07/2022

Efficient Dual-Numbers Reverse AD via Well-Known Program Transformations

Where dual-numbers forward-mode automatic differentiation (AD) pairs eac...
research
02/06/2020

A Language for Describing Optimization Strategies

Optimizing programs to run efficiently on modern parallel hardware is ha...
research
05/23/2022

Dual-Numbers Reverse AD, Efficiently

Where dual-numbers forward-mode automatic differentiation (AD) pairs eac...
research
01/11/2018

Note on usage and theory of hyper-dual numbers for first and second order automatic differentiation

Similar to dual numbers, hyper-dual numbers are extended numbers that ca...
research
06/06/2018

Efficient Differentiable Programming in a Functional Array-Processing Language

We present a system for the automatic differentiation of a higher-order ...
research
01/11/2018

Review of theory and implementation of hyper-dual numbers for first and second order automatic differentiation

In this review we present hyper-dual numbers as a tool for the automatic...
research
05/22/2018

Compiling with Continuations and LLVM

LLVM is an infrastructure for code generation and low-level optimization...

Please sign up or login with your details

Forgot password? Click here to reset