DeepAI AI Chat
Log In Sign Up

Differentiate Everything with a Reversible Programming Language

03/10/2020
by   Jin-Guo Liu, et al.
iphy.ac.cn
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

03/10/2020

Differentiate Everything with a Reversible Domain-Specific Language

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

Reversible Debugging in Logic Programming

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

Reversible Computation in Term Rewriting

Essentially, in a reversible programming language, for each forward comp...
02/14/2019

Introducing Yet Another REversible Language

Yarel is a core reversible programming language that implements a class ...
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...
10/23/2019

Analyzing Trade-offs in Reversible Linear and Binary Search Algorithms

Reversible algorithms are algorithms in which each step represents a par...
11/07/2018

Emerging Applications of Reversible Data Hiding

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

Code Repositories

NiLang.jl

A differential eDSL that can run faster than light and go back to the past.


view repo