Split reverse mode for mutating functions is full of traps
gdalle opened this issue · comments
The only backends concerned by this are AutoEnzyme(Enzyme.ReverseModeSplit)
and AutoTapir
.
For mutating functions, it is dangerous to interrupt reverse mode autodiff after the forward sweep. The variables are in an intermediate state which will only be reverted after the reverse sweep completes.
In particular, Tapir requires running another forward sweep between reverse sweep, so a pullback closure would be useless.
I'm not sure how split reverse Enzyme works, will have to investigate.
Related: