Linear solve in Float32
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
Direzione di ricerca
Inizia con la riproduzione fornita con BandedMatrix{Float32} e Array{Float64,1}, quindi segui il punto di ingresso ldiv! attraverso ArrayLayouts/x9nhz/src/ldiv.jl e il dispatch di BandedLU mostrato nello stack trace. Confronta questo comportamento con i metodi generici ldiv! di LinearAlgebra in generic.jl. Il lavoro è completato quando la risoluzione di una BandedMatrix Float32 con un vettore Float64 riesce in modo coerente come nel caso della matrice densa, con l’aggiunta della copertura di regressione se il repository dispone di una posizione di test adatta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Hi
Using LinearAlgebra, if A is dense and Float32 and b is a Float64 vector, A\b returns a Float64 result.
However, if A is a BandedMatrix, A\b fails if b is Float 64. All is well if b is Float32. I don't think I understand what you're doing well enough to formulate a useful PR.
Here is an example
julia> P=BandedMatrix{Float32}(rand(8,8),(2,2));
julia> P
8×8 BandedMatrix{Float32,Array{Float32,2},Base.OneTo{Int64}}:
1.15647e-01 2.53893e-01 2.28227e-01 … ⋅ ⋅
7.60258e-01 3.87160e-01 1.02753e-01 ⋅ ⋅
2.27781e-01 1.68999e-01 5.20508e-01 ⋅ ⋅
⋅ 5.79490e-01 8.32107e-02 ⋅ ⋅
⋅ ⋅ 6.97223e-01 3.71620e-01 ⋅
⋅ ⋅ ⋅ … 2.16488e-01 5.41685e-01
⋅ ⋅ ⋅ 4.83165e-01 8.53445e-02
⋅ ⋅ ⋅ 5.71176e-01 8.70984e-01
julia> b=rand(8,);
julia> P\b
ERROR: MethodError: no method matching ldiv!(::BandedMatrices.BandedLU{Float32,BandedMatrix{Float32,Array{Float32,2},Base.OneTo{Int64}}}, ::Array{Float64,1})
Closest candidates are:
ldiv!(::Number, ::AbstractArray) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/generic.jl:251
ldiv!(::LowerTriangular{T,var"#s796"} where var"#s796"<:(StridedArray{T, 2} where T), ::StridedVecOrMat{T}) where T<:Union{Complex{Float32}, Complex{Float64}, Float32, Float64} at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/triangular.jl:767
ldiv!(::Transpose{T,var"#s826"} where var"#s826"<:(LU{T,var"#s825"} where var"#s825"<:(StridedArray{T, 2} where T)), ::StridedVecOrMat{T}) where T<:Union{Complex{Float32}, Complex{Float64}, Float32, Float64} at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/lu.jl:399
...
Stacktrace:
[1] ldiv!(::Array{Float64,1}, ::BandedMatrices.BandedLU{Float32,BandedMatrix{Float32,Array{Float32,2},Base.OneTo{Int64}}}, ::Array{Float64,1}) at /Users/julia/buildbot/worker/package_macos64/build/usr/share/julia/stdlib/v1.5/LinearAlgebra/src/factorization.jl:139
[2] _ldiv! at /Users/ctk/.julia/packages/ArrayLayouts/x9nhz/src/ldiv.jl:74 [inlined]
[3] copyto! at /Users/ctk/.julia/packages/ArrayLayouts/x9nhz/src/ldiv.jl:92 [inlined]
[4] ldiv! at /Users/ctk/.julia/packages/ArrayLayouts/x9nhz/src/ldiv.jl:84 [inlined]
[5] _ldiv! at /Users/ctk/.julia/packages/ArrayLayouts/x9nhz/src/ldiv.jl:73 [inlined]
[6] copyto! at /Users/ctk/.julia/packages/ArrayLayouts/x9nhz/src/ldiv.jl:92 [inlined]
[7] copy at /Users/ctk/.julia/packages/ArrayLayouts/x9nhz/src/ldiv.jl:21 [inlined]
[8] materialize at /Users/ctk/.julia/packages/ArrayLayouts/x9nhz/src/ldiv.jl:22 [inlined]
[9] ldiv at /Users/ctk/.julia/packages/ArrayLayouts/x9nhz/src/ldiv.jl:78 [inlined]
[10] \(::BandedMatrix{Float32,Array{Float32,2},Base.OneTo{Int64}}, ::Array{Float64,1}) at /Users/ctk/.julia/packages/ArrayLayouts/x9nhz/src/ldiv.jl:119
[11] top-level scope at REPL[50]:1
- Lingua principale
- Julia
- Stelle
- 140
- Fork
- 40
- Merge medio
- 1g 11h
- PR unite (30g)
- 3
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 JuliaLinearAlgebra/BandedMatrices.jl
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 25/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
JuliaLinearAlgebra/BandedMatrices.jl#502 · 1 commento ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
JuliaLinearAlgebra/BandedMatrices.jl#495 · 1 commento ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
JuliaLinearAlgebra/BandedMatrices.jl#482 · 2 commenti ·
-
Bug in svdvalsAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
Tutte le issue di JuliaLinearAlgebra/BandedMatrices.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
legend-exp/LegendDataManagement.jl#232 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
EnzymeAD/Reactant.jl#3569 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
astroautomata/SymbolicRegression.jl#783 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno