Method ambiguities with SparseArrays.jl
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 55/100
Direzione di ricerca
Inizia riproducendo l'ambiguità con il MWE nell'issue, quindi esamina le definizioni delle derivate di hcat/vcat intorno a src/derivatives/arrays.jl:36. Conferma le firme dei metodi rilevanti e verifica che la chiamata a gradient venga completata senza un MethodError; l'issue è completata quando questa combinazione di SparseArrays esegue il dispatch senza ambiguità.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
MWE:
using ReverseDiff
function f2(x)
xv = @view x[1:end-1]
xend = x[end]
x = [xv; xend]
return sum(x)
end
ReverseDiff.gradient(f2, rand(10)) # works
using SparseArrays
ReverseDiff.gradient(f2, rand(10)) # fails
#=
ERROR: MethodError: vcat(::SubArray{…}, ::ReverseDiff.TrackedReal{…}) is ambiguous.
Candidates:
vcat(var"389"::AbstractVector, x::ReverseDiff.TrackedReal)
@ ReverseDiff ~/.julia/packages/ReverseDiff/rKZaG/src/derivatives/arrays.jl:41
vcat(X1::Union{Number, AbstractVecOrMat{<:Number}}, X::Union{Number, AbstractVecOrMat{<:Number}}...)
@ SparseArrays ~/.julia/juliaup/julia-1.12.2+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/SparseArrays/src/sparsevector.jl:1275
Possible fix, define
vcat(::AbstractVector{<:Number}, ::ReverseDiff.TrackedReal)
=#
The issues caused by the SparseArrays.jl definitions of hcat/vcat are I think well known (https://github.com/JuliaSparse/SparseArrays.jl/issues/431) but what I'm seeing from is that the solution for now is to define the necessary methods in ReverseDiff (?).
I think just adding :(AbstractVector{<:Number}) (and :(AbstractMatrix{<:Number})) to this line should fix it?
- Lingua principale
- Julia
- Stelle
- 395
- Fork
- 61
- Merge medio
- 23h 18m
- PR unite (30g)
- 16
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di JuliaDiff/ReverseDiff.jl
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
JuliaDiff/ReverseDiff.jl#318 ·
I maintainer di solito rispondono entro 1 giorno
-
`@grad`/`@grad_from_chainrules` silently reuse a tangent if a pullback returns too few tangentsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
JuliaDiff/ReverseDiff.jl#315 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
JuliaDiff/ReverseDiff.jl#314 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 56/100
JuliaDiff/ReverseDiff.jl#321 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
JuliaDiff/ReverseDiff.jl#320 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di JuliaDiff/ReverseDiff.jl
Issue simili
-
found-by-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
exanauts/SparseDirectSolver.jl#92 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
lu_instance/qr_instance run a full factorization for FixedSizeArraysForse già presa @devmotion l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
JuliaArrays/ArrayInterface.jl#510 ·
-
Segfault on x86_64 with AVX: over-aligned vector storeForse già presa @vchuravy l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
EnzymeAD/Enzyme.jl#3775 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno