Skip to content

Conversation

@jClugstor
Copy link
Member

Checklist

  • Appropriate tests were added
  • Any code changes were done in a way that does not break public API
  • All documentation related to code changes were updated
  • The new code follows the
    contributor guidelines, in particular the SciML Style Guide and
    COLPRAC.
  • Any new documentation only uses public API

Additional context

Add any other context about the problem here.

@jClugstor
Copy link
Member Author

will need SciML/SciMLBase.jl#1159 to fully work

@termi-official
Copy link
Contributor

Since you are already working on the logging system, is there any chance that we can have additional logging messages for the time integration loop at trace level to debug issues in the timestepping itself? Or is that too costly?

@ChrisRackauckas
Copy link
Member

We are splitting that to a different step. First let's get the infrastructure together, then add new messages.

Or is that too costly?

Never! If it's super costly, just put it in the All preset only. Semi? Detailed. Since there's individual switching and tons of levels, the goal is to just add tons and tons of default prints and if they are costly just don't have them on by default, but if you switch to All then you just get a lot of information.

@jClugstor jClugstor marked this pull request as ready for review October 24, 2025 16:45
@jClugstor
Copy link
Member Author

At this point anything that was behind a verbose is now under a @SciMLMessage and is controlled by an ODEVerbosity.

Currently, the linear_verbosity and nonlinear_verbosity fields are not used because those get set in alg_cache or build_nlsolver which do not have access to the integrator or the DEOptions where the verbosity object is. So setting those in ODEVerbosity will not do anything.

For the Linear solves and Nonlinear solves I set verbose to Minimal() to prevent unnecessary printing from those during an ODE solve.

@ChrisRackauckas
Copy link
Member

is this ready to review?

@jClugstor
Copy link
Member Author

Yep, ready to be looked at.

@ChrisRackauckas
Copy link
Member

Lots of test failures

@jClugstor
Copy link
Member Author

Yes, because I'm using Minimal() for verbose for the Nonlinear and Linear solves, and they can't handle that until
SciML/NonlinearSolve.jl#647 and
SciML/LinearSolve.jl#756

@jClugstor
Copy link
Member Author

Is there anything I can do about errors like this?

Failed to precompile OrdinaryDiffEqAdamsBashforthMoulton [89bda076-bce5-4f1c-845f-551c83cdda9a] to "/home/chrisrackauckas/.julia/compiled/v1.12/OrdinaryDiffEqAdamsBashforthMoulton/jl_QB6FLI".
ERROR: LoadError: Error opening package file /home/chrisrackauckas/.julia/compiled/v1.12/OrdinaryDiffEqCore/SoYJU_894Ui.so: /home/chrisrackauckas/.julia/compiled/v1.12/OrdinaryDiffEqCore/SoYJU_894Ui.so: cannot open shared object file: No such file or directory

@jClugstor
Copy link
Member Author

@ChrisRackauckas I think this is ready, but it's hard to tell with all of the test failures. Most of them are because LTS doesn't use sources, some are from JET, and some are failures to open .so files. But I went through as many of the legitimate failures that I could find and fixed them. I also bumped all of minor versions of every subpackage to reflect that.

The biggest issue here turned out to be that in order to get the Linear and Nonlinear verbosity objects to the linear and nonlinear caches I had to add an argument to every alg_cache function and call, as well as build_nlsolver. This messes up DelayDiffEq and StochasticDiffEq, since DelayDiffEq uses OrdinaryDiffEq.alg_cache and StochasticDiffEq uses build_nlsolver. The solution for that is probably to just update those to SciMLLogging? But that will take a day or two probably.

But yeah not sure if it's mergable in this state.

@ChrisRackauckas
Copy link
Member

The biggest issue here turned out to be that in order to get the Linear and Nonlinear verbosity objects to the linear and nonlinear caches I had to add an argument to every alg_cache function and call, as well as build_nlsolver. This messes up DelayDiffEq and StochasticDiffEq, since DelayDiffEq uses OrdinaryDiffEq.alg_cache and StochasticDiffEq uses build_nlsolver. The solution for that is probably to just update those to SciMLLogging? But that will take a day or two probably.

Yes, make the downstream PRs. But this should be easy to make backwards compatible with just the standard tricks right? Just make verbose be the last argument and make a dispatch that has a default verbose=ODEVerbosity(), so that it just adds the arg and passes down. Label it in a deprecated.jl file for future removal. Do this on alg_cache and build_nlsolver. Then downstream will work, just ignoring the verbosity argument until updated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants