1
1
# Diffractor - Next Generation AD
2
2
3
+ # General Overview
4
+
3
5
Diffractor is an experimental next-generation, compiler-based AD system for Julia.
4
6
Its public interface should be fimilar to users, essentially matching Zygote.
5
7
@@ -8,20 +10,26 @@ Design goals:
8
10
- Efficient higher order derivatives
9
11
- Reasonable compile times
10
12
- High flexibility (like Zygote)
13
+ - Support for foward/reverse/mixed modes
11
14
12
15
This is achieved through a combination of innovations:
13
16
- A new lowest level interface more suited to higher order AD (∂⃖ the "AD optic functor" or "diffractor"),
14
17
more suited to higher order AD
15
18
- New capabilities in Base Julia (Opaque closures, inference plugins)
16
19
- Better integration with ChainRules.jl
17
20
21
+ # Current Status
22
+
18
23
The plan is to implement this in two stages:
19
24
1 . Generated function based transforms, using the ChainRules, the new low level interface and Opaque closures
20
25
2 . Adding inference plugins
21
26
22
- After stage 1, Diffractor should hopefully match Zyogte in terms us usability,
23
- while having slightly better performance. Stage 2 is required for full performance,
24
- but should not require any interface changes.
27
+ Currently the implementation of Phase 1 is essentially complete, though mostly untested.
28
+ Experimentation is welcome, though it is probably not ready yet to be a production
29
+ AD system. The compiler parts of phase 1 are a bit "quick and dirty" as the main
30
+ point of phase 1 is to prove out that the overall scheme works. As a result, it
31
+ has known suboptimalities. I do not intend to do much work on these, since they
32
+ will be obsoleted by phase 2 anyway.
25
33
26
- Work on both stages is proceeding simultaneously, but stage 2 will depend on
27
- additional features in Julia base that may take additional time to implement .
34
+ A few features are still missing, e.g. chunking and I intend to do some more work
35
+ on user friendly interfaces, but it should overall be useable as an AD system .
0 commit comments