Skip to content

Improve CUTEst benchmarks #1283

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 199 commits into
base: cutest
Choose a base branch
from
Open

Conversation

arnavk23
Copy link

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.

ChrisRackauckas and others added 28 commits June 3, 2025 09:22
…5-06-12-00-43-54-098-02909572711

CompatHelper: bump compat for CairoMakie to 0.14 for package NonlinearProblem, (keep existing compat)
…5-06-12-00-41-40-076-01332792073

CompatHelper: bump compat for CairoMakie to 0.14 for package NonStiffBVP, (keep existing compat)
…5-06-12-00-39-56-742-01754762188

CompatHelper: bump compat for CairoMakie to 0.14 for package ModelingToolkit, (keep existing compat)
Function f was not used and because of that user-defined brusselator_jac was not used either.
Fix typo in BrussScaling.jmd
…5-06-22-00-51-11-482-03997939521

CompatHelper: bump compat for CairoMakie to 0.15 for package StiffBVP, (keep existing compat)
…5-06-22-00-47-22-578-00514091421

CompatHelper: bump compat for CairoMakie to 0.15 for package NonlinearProblem, (keep existing compat)
…5-06-22-00-45-14-241-04279058828

CompatHelper: bump compat for CairoMakie to 0.15 for package NonStiffBVP, (keep existing compat)
…5-06-22-00-43-37-694-00706521049

CompatHelper: bump compat for CairoMakie to 0.15 for package ModelingToolkit, (keep existing compat)
Implement benchmark files for Ring Modulator, E5, and Beam problems from the classic IVP test set:

- RingModulator.jmd: 15-dimensional stiff system modeling electronic ring modulator circuit
- E5.jmd: 4-dimensional chemical pyrolysis model with widely separated time scales
- Beam.jmd: 80-dimensional elastic beam dynamics with structural stiffness

These benchmarks complement the existing stiff ODE test suite and provide additional challenging test cases for evaluating solver performance across different system sizes and stiffness characteristics.

Addresses issue SciML#358 for adding PDFs from stiff ODE benchmark sets.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Complete the missing benchmark problems from issue SciML#358:

- MedicalAkzoNobel.jmd: 6-dimensional singularly perturbed system modeling radioimmunotherapy, representing the penetration of radio-labeled antibodies into tumor tissue with small parameter ε causing stiffness

- EMEP.jmd: 30-dimensional European atmospheric chemistry model focusing on ozone formation, including NOx-Ox chemistry, hydroxyl radical processes, organic compound reactions, and photochemistry with diurnal cycles

These benchmarks complement the existing Ring Modulator, E5, and Beam problems to provide a complete implementation of the classic IVP test set problems mentioned in issue SciML#358. The EMEP benchmark is distinct from the existing Pollution.jmd, representing a larger and more complex atmospheric chemistry system.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@arnavk23
Copy link
Author

@ChrisRackauckas @Vaibhavdixit02 can you please merge this to #1179 as I think it now passes the failing run tests

@ChrisRackauckas
Copy link
Member

Build failed. The builder requires v1.10.9

arnavk23 and others added 27 commits August 6, 2025 05:21
…ndling

- Add chunked processing (50 problems per chunk) to manage memory usage
- Implement comprehensive error handling with try/catch blocks
- Add time limits (300s per problem) to prevent hanging
- Force garbage collection between chunks to reduce memory pressure
- Add detailed progress logging with chunk and problem tracking
- Handle both problem loading and solving failures gracefully
- Apply improvements to all CUTEst benchmark files:
  * CUTEst_bounded.jmd (666 + 244 problems)
  * CUTEst_unbounded.jmd (285 + 114 problems)
  * CUTEst_quadratic.jmd (252 problems)
  * CUTEst_unconstrained.jmd (286 problems)

This resolves CI memory issues (ProcessSignaled(9)) while maintaining
comprehensive testing of all CUTEst problem sets.
- Reduce chunk size from 5 to 3 problems per chunk
- Lower variable limit from 100 to 50 variables per problem
- Reduce maxiters from 1e6 to 1000 iterations
- Keep maxtime at 60 seconds per problem
- Add aggressive problem size filtering

These changes should prevent ProcessSignaled(9) OOM errors in CI
while still testing a substantial number of CUTEst problems.
- Fixed critical filtering bug that was skipping 96% of problems
- Changed variable threshold from >50 to >10000 variables
- This allows processing of realistic CUTEst problems (most have 1000-5000 variables)
- Resolved ProcessSignaled(9) CI timeout errors
- Added chunked processing with memory management
- Reduced per-problem timeout from 60s to 5s
- Improved error handling and logging
- Updated all CUTEst benchmark files for consistency

Files modified:
- CUTEst_bounded.jmd: Fixed filtering (910 → ~872 problems processed)
- CUTEst_unbounded.jmd: Fixed filtering (403 → ~387 problems processed)
- CUTEst_quadratic.jmd: Fixed filtering (245 → ~235 problems processed)
- CUTEst_unconstrained.jmd: Fixed filtering (293 → ~281 problems processed)
- CUTEst_safe_solvers.jmd: Fixed filtering for extended solver testing

The benchmark now processes 96% of problems instead of 4%, making it
meaningful for performance evaluation while staying within CI time limits.
@ChrisRackauckas
Copy link
Member

oh this is a PR to a branch not to master?

@ChrisRackauckas
Copy link
Member

Re-open this as a PR to master. But I fixed the package handling and the manifest and force pushed, so get the new branch setup first, open a PR from that, and then continue. But this should run now.

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.

10 participants