|
|
|
|
|
by GiggleLiu
1930 days ago
|
|
> What if the reversibility of a program was implemented at the function level? Are you finding NiLang? - an embedded domain specific language in Julia for creating reversible functions. Meanwhile, it has one of the best performance in automatic differentiation (AD). I find reversible programming particularly useful in the reverse mode AD, where reversing the tape is required in order to use intermediate information to compute gradients. The Bennett's time space trade-off is particularly useful. Traditional AD also have something similar called treeverse to trace back states, however, it involves nasty implicit stack operations and can not utilize reversibility. Reversible computing is way more elegant. |
|
Update: Looks like the related HN discussion is here:
"Nilang.jl – A Reversible Julia DSL":
https://news.ycombinator.com/item?id=24743813
https://github.com/GiggleLiu/NiLang.jl
(Worth it, in my opinion, for the chart showing the "reversed-functions/variables" preceeded by '∂', i.e., ∂x, ∂y, ∂sqxN, etc.)
But anyway, NiLang definitely looks interesting!