Differentiate Everything with a Reversible Programming Language

03/10/2020
by   Jin-Guo Liu, et al.
0

This paper considers the source-to-source automatic differentiation (AD) in a reversible language. We start by reviewing the limitations of traditional AD frameworks. To solve the issues in these frameworks, we developed a reversible eDSL NiLang in Julia that can differentiate a general program while being compatible with Julia's ecosystem. It empowers users the flexibility to tradeoff time, space, and energy so that one can use it to obtain gradients and Hessians ranging for elementary mathematical functions, sparse matrix operations, and linear algebra that are widely used in scientific programming. We demonstrate that a source-to-source AD framework can achieve the state-of-the-art performance by showing and benchmarking several examples. Finally, we will discuss the challenges that we face towards rigorous reversible programming, mainly from the instruction and hardware perspective.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
03/10/2020

Differentiate Everything with a Reversible Domain-Specific Language

Traditional machine instruction level reverse mode automatic differentia...
research
07/31/2020

Reversible Debugging in Logic Programming

Reversible debugging is becoming increasingly popular for locating the s...
research
08/09/2017

From Reversible Programs to Univalent Universes and Back

We establish a close connection between a reversible programming languag...
research
02/14/2019

Introducing Yet Another REversible Language

Yarel is a core reversible programming language that implements a class ...
research
09/13/2023

CRIL: A Concurrent Reversible Intermediate Language

We present a reversible intermediate language with concurrency for trans...
research
12/06/2022

Branching execution symmetry in Jeopardy by available implicit arguments analysis

When the inverse of an algorithm is well-defined – that is, when its out...
research
11/07/2018

Emerging Applications of Reversible Data Hiding

Reversible data hiding (RDH) is one special type of information hiding, ...

Please sign up or login with your details

Forgot password? Click here to reset