patrick-kidger / patrick-kidger/diffrax

Question about different adjoint methods

Open
#611 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

question
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.