Skip to content

Raise Mooncake compat floor to 0.5.36 (fix Downgrade resolution)#522

Closed
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:raise-mooncake-floor-0.5.36
Closed

Raise Mooncake compat floor to 0.5.36 (fix Downgrade resolution)#522
ChrisRackauckas-Claude wants to merge 1 commit into
SciML:masterfrom
ChrisRackauckas-Claude:raise-mooncake-floor-0.5.36

Conversation

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor

Raise Mooncake compat floor to 0.5.36 (fix Downgrade resolution)

This is the "limit to latest Mooncake" fix for the promotion-caused Downgrade Unsatisfiable wall. The old Mooncake [compat] unions let the Downgrade/DowngradeSublibraries CI pin an ancient Mooncake at minimum resolution; because these sublibs promote Mooncake (a test extra) into the resolved dep set, the resolver could not satisfy the pinned ancient Mooncake. Limiting the floor to the latest registered Mooncake (0.5.36) lets min-resolution succeed.

Raised floors

Package old Mooncake compat new
lib/BoundaryValueDiffEqFIRK 0.4.146, 0.5 0.5.36
lib/BoundaryValueDiffEqMIRK 0.4, 0.5 0.5.36

Patch-bumped both sublibraries 1.17.11.17.2 (a [compat] narrowing on a test-only weakdep is a patch-level change).

Verification (resolves_at_min = true)

Ran julia-actions/julia-downgrade-compat's downgrade.jl (mode=alldeps, julia_version=1.12, effective skip = Julia stdlibs ∪ in-repo lib/* names, mirroring sublibrary-downgrade.yml@v1) on both edited sublibraries on Julia 1.12.6. Both resolved successfully at minimum versions with Mooncake pinned to exactly 0.5.36 — no Unsatisfiable. The Resolver-capacity wall does not persist here; the floor-raise alone fixes it (no dependency on #52).

ignore until reviewed by @ChrisRackauckas

The old Mooncake unions (0.4.146, 0.5 in FIRK; 0.4, 0.5 in MIRK) let the
Downgrade CI pin an ancient Mooncake at minimum resolution, which the
promotion-caused Resolver capacity wall could not satisfy (Unsatisfiable).
Limiting to the latest Mooncake (0.5.36) lets min-resolution succeed.

Verified with julia-downgrade-compat downgrade.jl (mode=alldeps, julia=1.12)
on both sublibraries: resolution succeeds with Mooncake pinned to 0.5.36.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@github-actions

github-actions Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia v1.11)

Time benchmarks
master cd1e93b... master / cd1e93b...
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK2() 0.575 ± 0.0065 s 0.587 ± 0.0061 s 0.98 ± 0.015
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK3() 12 ± 0.21 ms 12.2 ± 0.24 ms 0.983 ± 0.026
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK4() 2.62 ± 0.076 ms 2.66 ± 0.075 ms 0.985 ± 0.04
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK5() 3.21 ± 0.093 ms 3.23 ± 0.086 ms 0.995 ± 0.039
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK6() 1.53 ± 0.06 ms 1.54 ± 0.047 ms 0.995 ± 0.05
Simple Pendulum/IIP/MultipleShooting(10, Tsit5; grid_coarsening = false) 1.52 ± 0.069 ms 1.51 ± 0.07 ms 1.01 ± 0.066
Simple Pendulum/IIP/MultipleShooting(10, Tsit5; grid_coarsening = true) 3.16 ± 0.12 ms 3.12 ± 0.094 ms 1.01 ± 0.049
Simple Pendulum/IIP/MultipleShooting(100, Tsit5; grid_coarsening = false) 0.0382 ± 0.003 s 0.0387 ± 0.0029 s 0.989 ± 0.11
Simple Pendulum/IIP/MultipleShooting(100, Tsit5; grid_coarsening = true) 0.0597 ± 0.0029 s 0.0616 ± 0.0018 s 0.969 ± 0.055
Simple Pendulum/IIP/Shooting(Tsit5()) 0.175 ± 0.072 ms 0.172 ± 0.071 ms 1.02 ± 0.59
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK2() 0.735 ± 0.0086 s 0.741 ± 0.011 s 0.992 ± 0.019
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK3() 17.6 ± 4.9 ms 16.1 ± 5.9 ms 1.09 ± 0.5
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK4() 3.2 ± 0.12 ms 3.22 ± 0.21 ms 0.993 ± 0.076
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK5() 3.81 ± 0.21 ms 3.85 ± 0.22 ms 0.988 ± 0.078
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK6() 1.85 ± 0.1 ms 1.84 ± 0.1 ms 1 ± 0.08
Simple Pendulum/OOP/MultipleShooting(10, Tsit5; grid_coarsening = false) 3.25 ± 0.41 ms 3.22 ± 0.63 ms 1.01 ± 0.23
Simple Pendulum/OOP/MultipleShooting(10, Tsit5; grid_coarsening = true) 6.43 ± 5.6 ms 6.47 ± 5.3 ms 0.993 ± 1.2
Simple Pendulum/OOP/MultipleShooting(100, Tsit5; grid_coarsening = false) 0.0837 ± 0.0033 s 0.0872 ± 0.0041 s 0.959 ± 0.059
Simple Pendulum/OOP/MultipleShooting(100, Tsit5; grid_coarsening = true) 0.132 ± 0.0092 s 0.13 ± 0.0081 s 1.02 ± 0.095
Simple Pendulum/OOP/Shooting(Tsit5()) 0.628 ± 0.036 ms 0.602 ± 0.037 ms 1.04 ± 0.088
time_to_load 6.86 ± 0.079 s 6.86 ± 0.036 s 1 ± 0.013
Memory benchmarks
master cd1e93b... master / cd1e93b...
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.87 MB 0.0436 M allocs: 4.87 MB 1
Simple Pendulum/IIP/BoundaryValueDiffEqMIRK.MIRK4() 15.7 k allocs: 1.64 MB 15.7 k allocs: 1.64 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.04 MB 12.8 k allocs: 1.04 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.0491 M allocs: 3.39 MB 0.0491 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.95 MB 0.0324 M allocs: 3.95 MB 1
Simple Pendulum/OOP/BoundaryValueDiffEqMIRK.MIRK5() 0.045 M allocs: 4.98 MB 0.045 M allocs: 4.98 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.159 k allocs: 11.2 kB 0.159 k allocs: 11.2 kB 1

@ChrisRackauckas-Claude

Copy link
Copy Markdown
Contributor Author

Closing. Verified locally (ran the action's own downgrade.jl on the identical commit CI failed on) that raising the Mooncake compat floor does NOT fix the Downgrade lane. The failure is julia-downgrade-compat@v2 merged mode promoting all ~13 weakdep AD backends (Mooncake, Zygote, ForwardDiff, DifferentiationInterface, …) to hard deps and running Resolver.jl --min on the joint graph — which is registry-snapshot-dependent (flips UNSAT↔SAT as those packages release) and independent of Mooncake's version. This PR also unnecessarily narrows Mooncake compat. Real fix is julia-actions/julia-downgrade-compat#52 (do not promote weakdeps in merged resolution). Superseded — closing.

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