Type inference and exponentially large compile times
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- julia
- Ambito
- performance
Direzione di ricerca
Inizia eseguendo l’esempio minimo in lops.jl con Julia 1.8.1 e registra l’andamento dei tempi per Ns=4:17. Leggi issue #97 e traccia i percorsi di hcat e moltiplicazione di LinearOperator coinvolti nell’esempio. Il lavoro è completato quando il caso fornito non mostra più un tempo di compilazione in crescita esponenziale.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Issue #97 seemed to fix problems with type inference taking an inordinate amount of time when stringing together several LinearOperators. As far as I could tell, issue #97 was fixed, but the problem seems to be back in Julia 1.8.1. Please see below for a minimal working example + output on a fresh session of Julia 1.8.1 (I am using v2.4.1). Of course after running this another time in the same Julia session, the type inference is done and the whole thing takes very little time (as it would be expected)
# put in file lops.jl
# LinearOperator type stability
using LinearOperators
Ns = 4:17
function test_type_stability(N,n=5)
lops = [ LinearOperator(randn(n,n)) for i=1:N ]
C = hcat(lops...)
stats = @timed y = C*randn(n*length(lops))
return stats.time
end
ts = test_type_stability.(Ns)
for i=1:length(Ns)
println("t=$(ts[i]), N=$(Ns[i])")
end
Julia takes 46s to do type inference on a hcat of 17 operators:
julia> include("lops.jl")
t=0.160799892, N=4
t=0.063678277, N=5
t=0.053124796, N=6
t=0.052513037, N=7
t=0.061400427, N=8
t=0.061368384, N=9
t=0.072215448, N=10
t=0.11183163, N=11
t=0.242638285, N=12
t=0.639014602, N=13
t=1.658588125, N=14
t=5.229325223, N=15
t=14.906830724, N=16
t=46.837328005, N=17
- Lingua principale
- Julia
- Stelle
- 214
- Fork
- 46
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
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 JuliaSmoothOptimizers/LinearOperators.jl
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
-
Clarification of required fields for custom operatorsForse di nuovo libera @amontoison l’ha presa 255 giorni fa e non c’è nessuna pull request aperta. Aperta
JuliaSmoothOptimizers/LinearOperators.jl#412 · 1 commento · 1 reazione · 1 assegnatario ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
JuliaSmoothOptimizers/LinearOperators.jl#393 · 1 commento ·
-
Transpose allocates 16 bytesAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
JuliaSmoothOptimizers/LinearOperators.jl#384 · 2 commenti ·
-
Regularized Quasi-Newton operatorsForse di nuovo libera @molhab l’ha presa 577 giorni fa e non c’è nessuna pull request aperta. Aperta
JuliaSmoothOptimizers/LinearOperators.jl#366 · 5 commenti · 1 reazione · 2 assegnatari ·
Tutte le issue di JuliaSmoothOptimizers/LinearOperators.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
I maintainer di solito rispondono entro 1 giorno
-
lux
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
JuliaGraphs/GraphNeuralNetworks.jl#732 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
erfinv(::Float16) and erfcinv(::Float16) are wrong for abs(x) <= 0.75 (erfinv(Float16(0)) == 0.2201)Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
JuliaMath/SpecialFunctions.jl#571 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100