Reverse execution over saved node programs uses indexed gradients and deferred uniform updates. The all-seeds pass is proved equal to dense backpropagation without assuming associativity, zero identities, or that a VJP maps the zero cotangent to zero. The separate single-output pass omits unrelated nodes; these two semantics need not agree for arbitrary user-defined VJPs.
Evaluate every VJP, selecting its certified compact program when available.
Instances For
Either execution path adds exactly the complete dense contribution.
Reverse traversal finalizes one output gradient before continuing with the active prefix.
Instances For
Indexed reverse traversal returns every dense gradient in precisely the same order.
Prepared array backpropagation preserves full graph semantics for arbitrary seed packs.
Use certified equality when the scalar storage provides it. Other carriers retain the exact dense program, so the generic interface needs no additional scalar hypotheses.
Instances For
Backend selection preserves the complete reverse program for every scalar storage.
Stored reverse execution agrees with the original graph for every seed and scalar backend.
Visit only dependencies of the seeded output when a node has a certified compact support. An opaque dense VJP conservatively makes every preceding position reachable. Reachability follows the prepared VJP's support: a reached node still runs when its cotangent happens to be zero.
Instances For
Backpropagate from one output using certified support when storage equality is available.
Storage equality compares carrier encodings, not the scalar's numerical BEq; IEEE signed zeros
and NaNs therefore do not invalidate the support check. Carriers without decidable storage
equality retain the full dense program. backpropStored remains the explicit all-seeds reference.
Opaque VJPs conservatively visit the full prefix. Custom compact VJPs supply their own support;
this traversal makes no separate claim that it
captures the syntactic dependencies of an arbitrary user-defined forward function.
Instances For
Dense inputs-only reference, retaining the original local accumulation order.
Instances For
Saving primals also preserves the original inputs-only VJP for every seed.
Inputs-only reverse traversal releases finalized intermediate gradients immediately.
Instances For
Dropping finalized intermediates preserves the complete inputs-only result.
Select the certified indexed implementation without strengthening the scalar interface.
Instances For
Both storage choices compute the same ordered inputs-only reverse program.
Save one primal execution and compute its input pullback using indexed gradients.
Instances For
The ordinary pure VJP API compiles to the proved saved-program implementation.