You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello, I'm observing very strange and large memory allocations while solving a standard ODE and evaluating it at given times. However, after the first benchmark, if (and only if!) I recompile the integrated function these allocations disappear.
x = [3., 5., 10];
tms =collect(LinRange(0., 86400., 86400));
using BenchmarkTools
@benchmarktest($x, $tms)
yields:
BenchmarkTools.Trial:30 samples with 1 evaluation.
Range (min … max):129.553 ms …535.830 ms ┊ GC (min … max):11.32%…74.42%
Time (median):151.338 ms ┊ GC (median):14.82%
Time (mean ± σ):167.691 ms ±71.469 ms ┊ GC (mean ± σ):21.46%±11.46%
██
▆▇██▆▁▆▁▆▄▄▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▄ ▁
130 ms Histogram: frequency by time 536 ms <
Memory estimate:304.61 MiB, allocs estimate:432505.
If i recompile dyn! the new benchmark is:
BenchmarkTools.Trial:81 samples with 1 evaluation.
Range (min … max):49.294 ms …106.972 ms ┊ GC (min … max):0.00%…0.00%
Time (median):59.441 ms ┊ GC (median):0.00%
Time (mean ± σ):62.334 ms ±12.016 ms ┊ GC (mean ± σ):2.41%±4.19%
█ ▁ ▁▁ ▃
█▆█▇▄▇▇██▇▆▇▇█▁▇▆▆▆▆▄▆▆▆▄▄▁▁▄▁▁▆▆▁▁▁▄▁▁▁▁▁▁▁▆▁▁▄▁▄▄▁▁▁▁▁▁▁▁▄ ▁
49.3 ms Histogram: frequency by time 98.8 ms <
Memory estimate:17.22 MiB, allocs estimate:173311.
Any idea what's happening? I see the Garbage Collector is taking quite a lot of time
The text was updated successfully, but these errors were encountered:
MicheleCeresoli
changed the title
Strange Memory Allocations with DifferentialEquations.jl
Strange Memory Allocations with saveat
Jul 9, 2022
I've seen this in other spots, like SciML/OrdinaryDiffEq.jl#1502 . It seems like it's something to do with type inference or inlining being dependent on the method table, and so redefining functions can change what inlines and what does not. But it seems like a core Julia thing and I'm not sure what we could specifically do to avoid it (see some of the links to JuliaLang/julia issues, i.e. JuliaLang/julia#32552 and JuliaLang/julia#35800).
I'm closing this as a case of a Base Julia issue, and thus it's not actionable in this library, but I'll ask some of the folks working on inference what's the current status of fixing this.
Hello, I'm observing very strange and large memory allocations while solving a standard ODE and evaluating it at given times. However, after the first benchmark, if (and only if!) I recompile the integrated function these allocations disappear.
The function I'm integrating is:
while
test
is the function that evaluates the solution at the given times:Calling it with:
yields:
If i recompile
dyn!
the new benchmark is:Any idea what's happening? I see the Garbage Collector is taking quite a lot of time
The text was updated successfully, but these errors were encountered: