Excessive allocations with VectorOfArray in broadcast
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- julia
- Ambito
- performance
Direzione di ricerca
Inizia eseguendo il riproduttore VectorOfArray segnalato con DifferentialEquations, ODEProblem, RK4 e il benchmark rhs!, quindi confrontalo con la regola del punto medio. Traccia le allocazioni durante la risoluzione e identifica l’operazione responsabile delle allocazioni per elemento; il lavoro è completato quando il caso RK4 non mostra più allocazioni eccessive, mantenendo al contempo il comportamento di risoluzione segnalato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I am using a VectorOfArray as state vector in DifferentialEquations. This leads to too many allocations.
using DifferentialEquations
using RecursiveArrayTools
# Set up the state vector
U = VectorOfArray([zeros(100,100,100), zeros(100,100,100)]);
rhs!(U̇, U, p, t) = U̇ .= U
# Compile all code
prob = ODEProblem(rhs!, U, (0.0, 1.0));
sol = solve(prob, RK4(); adaptive=false, dt=1.0);
# Benchmark
prob = ODEProblem(rhs!, U, (0.0, 1.0));
@time sol = solve(prob, RK4(); adaptive=false, dt=1.0);
This outputs
1.639028 seconds (42.00 M allocations: 991.828 MiB, 18.67% gc time)
Note the very large number of allocations. It seems as if some operation was performing one small allocation per array element.
(I notice that this problem disappears if I switch to the midpoint rule.)
I tried with both Julia 1.7 and the current release branch of Julia 1.8.
- Lingua principale
- Julia
- Stelle
- 233
- Fork
- 76
- Merge medio
- 5h 33m
- PR unite (30g)
- 11
Guida per i contributori
Apri 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 SciML/RecursiveArrayTools.jl
-
Docs: usage of j vs i Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
SciML/RecursiveArrayTools.jl#255 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
SciML/RecursiveArrayTools.jl#662 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
SciML/RecursiveArrayTools.jl#661 ·
-
JET: similar_type(::Any) no-matching-method in RecursiveArrayToolsRaggedArrays (pre-existing QA red) Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
SciML/RecursiveArrayTools.jl#620 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
SciML/RecursiveArrayTools.jl#619 ·
Tutte le issue di SciML/RecursiveArrayTools.jl
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
interpolate! from a Float32 LatitudeLongitudeGrid fails on Metal: Float64 division in find_λ_range Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
CliMA/Oceananigans.jl#6056 ·
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 88/100
JuliaPluto/PlutoPlotly.jl#72 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
epiforecasts/BVDOutbreakSize#811 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
SciML/NonlinearSolve.jl#1310 · 1 commento ·