Skip to content

Commit

Permalink
Apply suggestions from code review
Browse files Browse the repository at this point in the history
Co-authored-by: Elliot Saba <[email protected]>
  • Loading branch information
oxinabox and staticfloat authored Jul 14, 2023
1 parent 3195698 commit 3df4051
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Diffractor is an experimental next-generation, compiler-based AD system for Juli

Design goals:
- Ultra high performance for both scalar and array code
- Efficient higher order derivatives though nested AD
- Efficient higher order derivatives through nested AD
- Reasonable compile times
- High flexibility (like Zygote)
- Support for forward/reverse/mixed modes
Expand All @@ -22,28 +22,27 @@ This is achieved through a combination of innovations:
- A new lowest level interface (∂⃖ the "AD optic functor" or "diffractor"), more suited to higher order AD
- New capabilities in Base Julia (Opaque closures, inference plugins)
- Better integration with ChainRules.jl
- Demand-driven forward-mode AD (Forwards-mode AD that knows which outputs are active and only ADs the path to them.)
- Demand-driven forward-mode AD (Applying transforms to only those IR statements that contribute to relevant outputs of the function being differentiated)

# Current status
## Current Status: Forwards-Mode
Recently forwards-mode has been a priority, and now forms a core part of some closed source products.
## Current Status: Forward-Mode
Currently, forward-mode is the only fully-functional mode and is now shipping in some closed source products.
It is in a position to compete with [ForwardDiff.jl](https://github.com/JuliaDiff/TaylorDiff.jl), and with [TaylorDiff.jl](https://github.com/JuliaDiff/TaylorDiff.jl).
It is certainly no where near as battle-tested as ForwardDiff.jl, but it has several advantages.
It is not as battle-tested as ForwardDiff.jl, but it has several advantages.
Primarily, as it is not an operator overloading AD, it frees one from the need to relax type-constants and worry about the types of containers.
Furthermore, Like TaylorDiff.jl, it supports Taylor series based computation of higher order derviatives.


One limitation over ForwardDiff.jl is a lack of chunking support, to pushforward multiple basies at once.
One limitation over ForwardDiff.jl is a lack of chunking support, to pushforward multiple bases at once.



## Current Status: Reverse-Mode
Reverse mode has recently been deprioritized.
While originally, a higher priority and working well, it is now a secondary priority.<br>
Improved reverse mode support is planned for a future release.
While reverse mode was originally implemented and working, it has been stripped out until such a time as it can be properly implemented on top of new Julia compiler changes.<br>
⚠️ **Reverse Mode support should be considered experimental, and may break without warning, and may not be fixed rapidly.** ⚠️ <br>

With that said, issues and PRs for reverse mode continue to be appreciated.

### Status as of last time reverse mode was worked on:

The plan is to implement this in two stages:
Expand Down

0 comments on commit 3df4051

Please sign in to comment.