-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
I have a case where this works:
method = IntegrationProfiler(integrator = Tsit5(), integrator_opts = (dtmax = 0.1,), matrix_type = :hessian)
pl_sol = profile(plprob, method; idxs = [p_idx])
but this fails:
method = IntegrationProfiler(integrator = Tsit5(), integrator_opts = (dtmax = 0.1, dtmin = 0.001), matrix_type = :hessian
pl_sol = profile(plprob, method; idxs = [p_idx])
with a
┌ Warning: dt(0.001) <= dtmin(0.001) at t=0.5172726656986002, and step error estimate = 0.27677973712186665. Aborting. There is either an error in your model specification or the true solution is unstable.
└ @ SciMLBase ~/.julia/packages/SciMLBase/Ub9ub/src/integrator_interface.jl:612
┌ Warning: Solver returned DtLessThanMin retcode at profile point x = 0.5172726656986002. Profiling is interrupted.
└ @ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profiler_state.jl:202
ERROR: UndefVarError: `sol` not defined in `LikelihoodProfiler`
Suggestion: check for spelling errors or missing imports.
Stacktrace:
[1] profiler_step!(profiler::LikelihoodProfiler.ProfilerState{…}, method::IntegrationProfiler{…})
@ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profiler_state.jl:203
[2] __profile_dir!(profiler_state::LikelihoodProfiler.ProfilerState{…})
@ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profile.jl:78
[3] __profile_dir(plprob::PLProblem{…}, method::IntegrationProfiler{…}, idx::Int64, dir::Int64; kwargs::@Kwargs{})
@ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profile.jl:62
[4] __profile_dir
@ ~/.julia/dev/LikelihoodProfiler/src/profile.jl:59 [inlined]
[5] (::LikelihoodProfiler.var"#13#14"{@Kwargs{}, PLProblem{…}, IntegrationProfiler{…}})(idx::Int64)
@ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profile.jl:50
[6] iterate
@ ./generator.jl:48 [inlined]
[7] _collect(c::Vector{…}, itr::Base.Generator{…}, ::Base.EltypeUnknown, isz::Base.HasShape{…})
@ Base ./array.jl:811
[8] collect_similar
@ ./array.jl:720 [inlined]
[9] map
@ ./abstractarray.jl:3371 [inlined]
[10] macro expansion
@ ./timing.jl:421 [inlined]
[11] __profile(plprob::PLProblem{…}, method::IntegrationProfiler{…}, ::Val{…}, idxs::Vector{…}; kwargs::@Kwargs{})
@ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profile.jl:48
[12] __profile
@ ~/.julia/dev/LikelihoodProfiler/src/profile.jl:46 [inlined]
[13] profile(plprob::PLProblem{…}, method::IntegrationProfiler{…}; idxs::Vector{…}, parallel_type::Symbol, kwargs::@Kwargs{})
@ LikelihoodProfiler ~/.julia/dev/LikelihoodProfiler/src/profile.jl:42
Reducing the dtmin
solves it, so that bit is fine. However, the error might be something (minor or not) to have a look at.
Activity
ivborissov commentedon Mar 20, 2025
As internally we solve an ODE system, the solver can produce such warnings if
dt
doesn't suite the tolerance settings. We are looking for a default (recommended) diffeq settings to use inIntegrationProfiler
but it implies performing many benchmarks, so we haven't come up with the defaults here yet.