Document the interaction behaviour of @grad and compile.
#250
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
TLDR:
This PR adds documentation to
@gradthat specifies what the@graded function should return, and documents that any variables defined outside of the returned adjoint function have their valuesfrozento their compiled ones.Context:
In this discussion from issue #243 I fumbled my way through working out how
@gradfunctions in relation tocompile. Unsurprisingly to anyone who understands adjoints, I found out that any intermediate variables defined in the body of the function could be used but not updated when the gradient is compiled withcompile.This PR is just a bit of documentation added to the unexported macro
@gradso that anyone else who dives into ReverseDiff might have an easier time concretely understanding the expected effects ofcompile.Any suggestions on changes to language or wording are more than welcome.