JuliaDiff / JuliaDiff/ChainRulesCore.jl
InplacableThunk and subspace types
Nobody has claimed this yet.
- #393 by @mcabbott — closed without merging
- Dominant language
- Julia
- Stars
- 267
- Forks
- 66
- PR merge metrics
- No merged PRs in 30d
Description
Using InplacableThunk does not play nice with
Some special cases like if the inplace part is just .+= are easy enough to do with ProjectTo see #inplace
See https://github.com/JuliaDiff/ChainRulesCore.jl/issues/274
But for something like:
dA = InplaceableThunk(
X̄ -> mul!(X̄, Ȳ, B', true, true),
@thunk(project_A(Ȳ * B')),
)
it is not so easy.
Since it may try and set a structural zero in the mul!.
For now we are just restricting use of InplacableThunk to places wehre it is known safe,
and removing them when issues occur.
One approach is in
https://github.com/JuliaDiff/ChainRulesCore.jl/pull/393
And some notes are there
Contributor guide
No contributing guide indexed for this repository
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 reading the notes in closed PR #393 and the related issue #274, then inspect the InplaceableThunk, ProjectTo, and mul! cases described here. Determine how subspace types and structural zeros should be handled, and document a clear safe-use rule or implementation path for the problematic example.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- backend-api-design
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100