Skip to content

Raise FIRK/MIRK downgrade compat floors - #540

Merged
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:fix-sublib-scimlbase-compat-downgrade
Jul 11, 2026
Merged

Raise FIRK/MIRK downgrade compat floors#540
ChrisRackauckas merged 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:fix-sublib-scimlbase-compat-downgrade

Conversation

@ChrisRackauckas-Claude

@ChrisRackauckas-Claude ChrisRackauckas-Claude commented Jul 10, 2026

Copy link
Copy Markdown
Member

Ignore this PR until reviewed by @ChrisRackauckas.

Summary

  • Raise SciMLBase compat in BoundaryValueDiffEqFIRK and BoundaryValueDiffEqMIRK from 3 to 3.30 so the sublibraries match the in-tree BoundaryValueDiffEqCore floor.
  • Allow LinearSolve 4.2 in the same sublibraries; after the SciMLBase floor is fixed, the downgrade resolver can otherwise hit an empty intersection with LinearSolve v4.2.1.
  • This is only the downgrade resolver-floor fix. The separate MIRK Dual runtime failure is handled in Fix MIRK extrema boundary conditions under AD #542, and Shooting is handled in Fix MultipleShooting caches for tagged AD states #541.

Evidence

  • Current master downgrade logs fail at resolution because the downgrade action pins SciMLBase v3.0.0 while the path dependency BoundaryValueDiffEqCore requires SciMLBase >= 3.30.
  • Local reproduction after only the SciMLBase floor exposed the next resolver conflict: LinearSolve@4.2.1 was incompatible with LinearSolve = "2.36.2, 3".
  • After this patch, local downgraded FIRK Pkg.test(...; force_latest_compatible_version=false, allow_reresolve=false) instantiated with SciMLBase v3.35.1 and LinearSolve v4.2.1, so the resolver failure is gone.
  • After this patch, local downgraded MIRK Pkg.test(...; force_latest_compatible_version=false, allow_reresolve=false) also got past resolution and reached the known MIRK Dual runtime failures fixed separately in Fix MIRK extrema boundary conditions under AD #542.

Local verification

  • git diff --check passed.
  • FIRK downgraded Pkg.test with Julia 1.10 and BOUNDARYVALUEDIFFEQ_TEST_GROUP=Core no longer failed at resolution. It completed FIRK Expanded Basic Tests | 234 pass, 20 broken, 254 total in 81m17.4s, then timed out after 2 hours in test/nested/firk_basic_tests.jl without an Error During Test marker before termination. I am not claiming the full FIRK downgraded package test passes locally.
  • MIRK downgraded Pkg.test with Julia 1.10 no longer failed at resolution. It reported the expected Float64(::ForwardDiff.Dual) failures in mirk.jl:338 (Swirling Flow III, big-defect interpolant, max/min solution), which are covered by Fix MIRK extrema boundary conditions under AD #542, then timed out after 1 hour. I am not claiming MIRK passes locally from this PR alone.

@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia v1.11)

Time benchmarks
master e7b6a52... master / e7b6a52...
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK2() 0.569 ± 0.017 s 0.532 ± 0.0059 s 1.07 ± 0.034
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK3() 11.8 ± 0.49 ms 11.4 ± 0.98 ms 1.04 ± 0.099
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK4() 2.56 ± 0.16 ms 2.5 ± 0.33 ms 1.02 ± 0.15
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK5() 2.96 ± 0.13 ms 2.9 ± 0.12 ms 1.02 ± 0.06
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK6() 1.46 ± 0.063 ms 1.47 ± 0.19 ms 0.996 ± 0.13
Simple Pendulum/IIP/MultipleShooting(10, Tsit5; grid_coarsening = false) 1.5 ± 0.083 ms 1.55 ± 0.11 ms 0.971 ± 0.088
Simple Pendulum/IIP/MultipleShooting(10, Tsit5; grid_coarsening = true) 3.91 ± 1.2 ms 3.32 ± 0.72 ms 1.18 ± 0.44
Simple Pendulum/IIP/MultipleShooting(100, Tsit5; grid_coarsening = false) 0.0371 ± 0.0025 s 0.0405 ± 0.0062 s 0.915 ± 0.15
Simple Pendulum/IIP/MultipleShooting(100, Tsit5; grid_coarsening = true) 0.0618 ± 0.0057 s 0.0626 ± 0.013 s 0.987 ± 0.23
Simple Pendulum/IIP/Shooting(Tsit5()) 0.162 ± 0.08 ms 0.176 ± 0.083 ms 0.922 ± 0.63
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK2() 0.695 ± 0.019 s 0.788 ± 0.028 s 0.882 ± 0.039
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK3() 16.5 ± 4.7 ms 16.5 ± 6.7 ms 1 ± 0.5
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK4() 2.93 ± 0.17 ms 3.35 ± 0.53 ms 0.874 ± 0.15
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK5() 3.66 ± 0.34 ms 3.71 ± 0.5 ms 0.986 ± 0.16
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK6() 1.78 ± 0.21 ms 1.82 ± 0.4 ms 0.974 ± 0.24
Simple Pendulum/OOP/MultipleShooting(10, Tsit5; grid_coarsening = false) 3.51 ± 1.9 ms 3.1 ± 0.86 ms 1.13 ± 0.68
Simple Pendulum/OOP/MultipleShooting(10, Tsit5; grid_coarsening = true) 6.84 ± 6.4 ms 6.95 ± 7.1 ms 0.984 ± 1.4
Simple Pendulum/OOP/MultipleShooting(100, Tsit5; grid_coarsening = false) 0.0868 ± 0.0098 s 0.0935 ± 0.011 s 0.929 ± 0.15
Simple Pendulum/OOP/MultipleShooting(100, Tsit5; grid_coarsening = true) 0.146 ± 0.018 s 0.143 ± 0.013 s 1.02 ± 0.16
Simple Pendulum/OOP/Shooting(Tsit5()) 0.586 ± 0.078 ms 0.576 ± 0.17 ms 1.02 ± 0.33
time_to_load 7.76 ± 0.24 s 7.43 ± 0.24 s 1.05 ± 0.047
Memory benchmarks
master e7b6a52... master / e7b6a52...
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK2() 0.389 M allocs: 0.0443 GB 0.389 M allocs: 0.0443 GB 1
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK3() 0.0436 M allocs: 4.88 MB 0.0436 M allocs: 4.88 MB 1
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK4() 15.7 k allocs: 1.65 MB 15.7 k allocs: 1.65 MB 1
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK5() 22.1 k allocs: 2.03 MB 22.1 k allocs: 2.03 MB 1
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK6() 12.8 k allocs: 1.05 MB 12.8 k allocs: 1.05 MB 1
Simple Pendulum/IIP/MultipleShooting(10, Tsit5; grid_coarsening = false) 25.5 k allocs: 1.82 MB 25.5 k allocs: 1.82 MB 1
Simple Pendulum/IIP/MultipleShooting(10, Tsit5; grid_coarsening = true) 0.049 M allocs: 3.39 MB 0.049 M allocs: 3.39 MB 1
Simple Pendulum/IIP/MultipleShooting(100, Tsit5; grid_coarsening = false) 0.553 M allocs: 0.0535 GB 0.553 M allocs: 0.0535 GB 1
Simple Pendulum/IIP/MultipleShooting(100, Tsit5; grid_coarsening = true) 0.833 M allocs: 0.0778 GB 0.833 M allocs: 0.0778 GB 1
Simple Pendulum/IIP/Shooting(Tsit5()) 4.63 k allocs: 0.224 MB 4.63 k allocs: 0.224 MB 1
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK2() 0.89 M allocs: 0.984 GB 0.89 M allocs: 0.984 GB 1
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK3() 0.0932 M allocs: 24.8 MB 0.0932 M allocs: 24.8 MB 1
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK4() 0.0324 M allocs: 3.96 MB 0.0324 M allocs: 3.96 MB 1
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK5() 0.045 M allocs: 4.99 MB 0.045 M allocs: 4.99 MB 1
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK6() 25.3 k allocs: 2.17 MB 25.3 k allocs: 2.17 MB 1
Simple Pendulum/OOP/MultipleShooting(10, Tsit5; grid_coarsening = false) 0.142 M allocs: 10.2 MB 0.142 M allocs: 10.2 MB 1
Simple Pendulum/OOP/MultipleShooting(10, Tsit5; grid_coarsening = true) 0.266 M allocs: 18.7 MB 0.266 M allocs: 18.7 MB 1
Simple Pendulum/OOP/MultipleShooting(100, Tsit5; grid_coarsening = false) 2.52 M allocs: 0.279 GB 2.52 M allocs: 0.279 GB 1
Simple Pendulum/OOP/MultipleShooting(100, Tsit5; grid_coarsening = true) 3.82 M allocs: 0.404 GB 3.82 M allocs: 0.404 GB 1
Simple Pendulum/OOP/Shooting(Tsit5()) 0.0373 M allocs: 1.69 MB 0.0373 M allocs: 1.69 MB 1
time_to_load 0.161 k allocs: 11.4 kB 0.161 k allocs: 11.4 kB 1

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude
ChrisRackauckas-Claude force-pushed the fix-sublib-scimlbase-compat-downgrade branch from e4edaad to e7b6a52 Compare July 11, 2026 13:56
@ChrisRackauckas-Claude ChrisRackauckas-Claude changed the title Raise FIRK/MIRK SciMLBase compat floors Raise FIRK/MIRK downgrade compat floors Jul 11, 2026
@ChrisRackauckas
ChrisRackauckas marked this pull request as ready for review July 11, 2026 23:05
@ChrisRackauckas
ChrisRackauckas merged commit 0484662 into SciML:master Jul 11, 2026
24 of 43 checks passed
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.

2 participants