JuliaArrays / JuliaArrays/ArrayInterface.jl
Introduce a `isa_wrapped_array` function
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 140
- Forks
- 44
- Avg merge
- 4d 14h
- Merged PRs (30d)
- 5
Description
Most details are in https://github.com/EnzymeAD/Reactant.jl/pull/369#issuecomment-2541402690. I will copy over the important parts.
We introduce a function isa_wrapped_array that downstream packages can use to mark that their array type wraps another array. Using a union type from Adapt doesn't solve this problem, because that fundamentally doesn't extend to new array types.
With this function, we can override functions inside our custom interpreter. Consider this simple example of extending LinearAlgebra.diag
Base.Experimental.@overlay REACTANT_METHOD_TABLE function LinearAlgebra.diag(
x::AbstractArray{T,2}, k::Integer=0
) where {T}
if isa_wrapped_array(x) && ancestor(x) isa TracedRArray
y = materialize_traced_array(x) # convert it to a known type
return diag(y, k)
else
# invoke diag(x) on NativeInterpreter
end
end
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 with the details in PR 369's issue comment, especially the proposed isa_wrapped_array behavior and the LinearAlgebra.diag overlay example. Determine the interface needed for downstream array types and how it supports the custom interpreter use case. Done means the function is introduced with behavior matching that specification and the relevant usage is covered.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- data
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100