vix.ing · top · new · best · stats

Don't Unroll Adjoint: Differentiating SSA-Form Programs

2018/10/18 by Michael Innes, Innes, Michael · 4 voices · 62 citations
Computer Science · #Algorithms and Data Compression #Automatic differentiation #Code (set theory) #Compiler #Computation #Computer science #Control flow #Embedded Systems Design Techniques #Nesting (process) #Parallel Computing and Optimization Techniques #Parallel computing #Programming language #Recursion (computer science) #Semantics (computer science) #Theoretical computer science #Transformation (genetics) #cs.PL

paper · pdf · doi:10.48550/arxiv.1810.07951

published in arXiv (Cornell University) (Cornell University)

openalex publication_date 2018/10/18 · arxiv created 2019/03/09 · arxiv updated 2019/03/12 · openalex created_date 2025/10/10 · openalex updated_date 2026/08/05

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