From 4b40958c513948d21f5e6994becdbbcee14c3fdd Mon Sep 17 00:00:00 2001 From: Joshua Lampert Date: Tue, 3 Feb 2026 13:30:03 +0100 Subject: [PATCH] make EnzymeCore.jl a strong dependency of OrdinaryDiffEqCore.jl --- lib/OrdinaryDiffEqCore/Project.toml | 3 +-- .../src/OrdinaryDiffEqCore.jl | 4 +++ .../enzyme_rules.jl} | 26 +++++++++---------- 3 files changed, 18 insertions(+), 15 deletions(-) rename lib/OrdinaryDiffEqCore/{ext/OrdinaryDiffEqCoreEnzymeCoreExt.jl => src/enzyme_rules.jl} (50%) diff --git a/lib/OrdinaryDiffEqCore/Project.toml b/lib/OrdinaryDiffEqCore/Project.toml index 870d14452b2..587b1130530 100644 --- a/lib/OrdinaryDiffEqCore/Project.toml +++ b/lib/OrdinaryDiffEqCore/Project.toml @@ -4,6 +4,7 @@ authors = ["ParamThakkar123 "] version = "3.4.0" [deps] +EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" SciMLOperators = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" SciMLStructures = "53ae85a6-f571-4167-b2af-e1d143709226" Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" @@ -97,13 +98,11 @@ Reexport = "1.2" [weakdeps] Mooncake = "da2b9cff-9c12-43a0-ae48-6db2b0edb7d6" -EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [targets] test = ["DiffEqDevTools", "Random", "SafeTestsets", "SparseArrays", "Test", "Pkg"] [extensions] -OrdinaryDiffEqCoreEnzymeCoreExt = "EnzymeCore" OrdinaryDiffEqCoreMooncakeExt = "Mooncake" OrdinaryDiffEqCoreSparseArraysExt = "SparseArrays" diff --git a/lib/OrdinaryDiffEqCore/src/OrdinaryDiffEqCore.jl b/lib/OrdinaryDiffEqCore/src/OrdinaryDiffEqCore.jl index e274231c5d0..dc3557eb4dc 100644 --- a/lib/OrdinaryDiffEqCore/src/OrdinaryDiffEqCore.jl +++ b/lib/OrdinaryDiffEqCore/src/OrdinaryDiffEqCore.jl @@ -97,6 +97,8 @@ using SymbolicIndexingInterface: state_values, parameter_values using ConcreteStructs: @concrete +import EnzymeCore + const CompiledFloats = Union{Float32, Float64} import Preferences @@ -166,6 +168,8 @@ include("solve.jl") include("initdt.jl") include("interp_func.jl") +include("enzyme_rules.jl") + include("precompilation_setup.jl") end diff --git a/lib/OrdinaryDiffEqCore/ext/OrdinaryDiffEqCoreEnzymeCoreExt.jl b/lib/OrdinaryDiffEqCore/src/enzyme_rules.jl similarity index 50% rename from lib/OrdinaryDiffEqCore/ext/OrdinaryDiffEqCoreEnzymeCoreExt.jl rename to lib/OrdinaryDiffEqCore/src/enzyme_rules.jl index a39df226cfb..01c7cce9aa9 100644 --- a/lib/OrdinaryDiffEqCore/ext/OrdinaryDiffEqCoreEnzymeCoreExt.jl +++ b/lib/OrdinaryDiffEqCore/src/enzyme_rules.jl @@ -1,47 +1,47 @@ -module OrdinaryDiffEqCoreEnzymeCoreExt -import OrdinaryDiffEqCore, EnzymeCore - function EnzymeCore.EnzymeRules.inactive_noinl( - ::typeof(OrdinaryDiffEqCore.increment_nf!), args... + ::typeof(increment_nf!), args... ) return true end + function EnzymeCore.EnzymeRules.inactive_noinl( - ::typeof(OrdinaryDiffEqCore.fixed_t_for_floatingpoint_error!), args... + ::typeof(fixed_t_for_floatingpoint_error!), args... ) return true end + function EnzymeCore.EnzymeRules.inactive_noinl( - ::typeof(OrdinaryDiffEqCore.increment_accept!), args... + ::typeof(increment_accept!), args... ) return true end + function EnzymeCore.EnzymeRules.inactive_noinl( - ::typeof(OrdinaryDiffEqCore.increment_reject!), args... + ::typeof(increment_reject!), args... ) return true end + function EnzymeCore.EnzymeRules.inactive_noinl( - ::typeof(OrdinaryDiffEqCore.check_error!), args... + ::typeof(check_error!), args... ) return true end + function EnzymeCore.EnzymeRules.inactive_noinl( - ::typeof(OrdinaryDiffEqCore.log_step!), args... + ::typeof(log_step!), args... ) return true end function EnzymeCore.EnzymeRules.inactive_noinl( - ::typeof(OrdinaryDiffEqCore.final_progress), args... + ::typeof(final_progress), args... ) return true end function EnzymeCore.EnzymeRules.inactive_noinl( - ::typeof(OrdinaryDiffEqCore.ode_determine_initdt), args... + ::typeof(ode_determine_initdt), args... ) return true end - -end