vix.ing · top · new · best · stats · spec

Don't Unroll Adjoint: Differentiating SSA-Form Programs

2018/10/18 by Michael Innes, Innes, Michael · 4 voices · 19 citations
Computer Science · #Algorithms and Data Compression #Embedded Systems Design Techniques #Parallel Computing and Optimization Techniques #cs.PL

paper · pdf · doi:10.48550/arxiv.1810.07951

openalex publication_date 2018/10/18 · openalex created_date 2025/10/10 · openalex updated_date 2026/07/28

Abstract

This paper presents reverse-mode algorithmic differentiation (AD) based on source code transformation, in particular of the Static Single Assignment (SSA) form used by modern compilers. The approach can support control flow, nesting, mutation, recursion, data structures, higher-order functions, and other language constructs, and the output is given to an existing compiler to produce highly efficient differentiated code. Our implementation is a new AD tool for the Julia language, called Zygote, which presents high-level dynamic semantics while transparently compiling adjoint code under the hood. We discuss the benefits of this approach to both the usability and performance of AD tools.

Citations

Cited by

Discussions

Related