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:
The only backends concerned by this are
AutoEnzyme(Enzyme.ReverseModeSplit)andAutoTapir.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: