patrick-kidger / patrick-kidger/diffrax
Question about different adjoint methods
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 2.1k
- Forks
- 189
- Avg merge
- 3d 18h
- Merged PRs (30d)
- 1
Description
Just wanted to ask if I have the right understanding of what algorithms are being used for each adjoint method, as the documentation does not link each method to a paper or reference.
My understanding is:
RecursiveCheckpointAdjoint - Autodiff through ODE solver, uses checkpointing
DirectAdjoint - Autodiff through ODE solver, doesn’t use checkpointing
BacksolveAdjoint - Continuous-time adjoint equation solver, doesn’t seem to use checkpointing
ForwardMode - Some sort of forward sensitivity method, either in continuous or discrete time (unclear)
ImplicitAdjoint - Optimize trajectory y (written as a discrete set of points) to set ODE RHS to zero
Is this correct? The one I'm most confused about is what ForwardMode is.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the documentation and the descriptions of RecursiveCheckpointAdjoint, DirectAdjoint, BacksolveAdjoint, ForwardMode, and ImplicitAdjoint. Verify each method against its implementation and relevant references; done means the documentation links each method to an appropriate paper or reference and clearly explains ForwardMode.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100