From 9badcb47cd9c0b528271814f74c6e11e9952a23e Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Wed, 29 Apr 2026 07:09:55 -0400 Subject: [PATCH 1/9] Remove v7 transition comments and drop support for previous majors --- Project.toml | 12 ++++++------ src/DiffEqGPU.jl | 10 ---------- src/ensemblegpuarray/callbacks.jl | 9 --------- src/ensemblegpuarray/kernels.jl | 7 ------- src/ensemblegpukernel/linalg/lu.jl | 12 ++---------- test/distributed_multi_gpu.jl | 2 +- test/ensemblegpuarray.jl | 2 -- test/ensemblegpuarray_inputtypes.jl | 2 -- test/ensemblegpuarray_oop.jl | 2 +- .../stiff_ode/gpu_ode_discrete_callbacks.jl | 3 --- test/gpu_kernel_de/stiff_ode/gpu_ode_mass_matrix.jl | 8 -------- .../stiff_ode/gpu_ode_modelingtoolkit_dae.jl | 4 ---- 12 files changed, 10 insertions(+), 63 deletions(-) diff --git a/Project.toml b/Project.toml index df312402..1b282201 100644 --- a/Project.toml +++ b/Project.toml @@ -43,22 +43,22 @@ OpenCLExt = ["OpenCL"] oneAPIExt = ["oneAPI"] [compat] -AMDGPU = "1, 2" +AMDGPU = "2" Adapt = "4" -CUDA = "5, 6" +CUDA = "6" ChainRulesCore = "1" DiffEqBase = "7" DocStringExtensions = "0.9" -ForwardDiff = "0.10.38, 1" +ForwardDiff = "1" GPUArraysCore = "0.2" -JLArrays = "0.1, 0.2, 0.3" +JLArrays = "0.3" KernelAbstractions = "0.9" LinearSolve = "3" Metal = "1" MuladdMacro = "0.2" -OpenCL = "0.9, 0.10" +OpenCL = "0.10" Parameters = "0.12" -RecursiveArrayTools = "3.37, 4" +RecursiveArrayTools = "4" SciMLBase = "3" Setfield = "1" SimpleDiffEq = "1.11" diff --git a/src/DiffEqGPU.jl b/src/DiffEqGPU.jl index 93625a51..f6407daa 100644 --- a/src/DiffEqGPU.jl +++ b/src/DiffEqGPU.jl @@ -74,19 +74,9 @@ include("ensemblegpukernel/tableaus/kvaerno_tableaus.jl") include("utils.jl") include("algorithms.jl") include("solve.jl") -# Re-export the ensemble interface from SciMLBase. Pre-OrdinaryDiffEq v7, -# `using OrdinaryDiffEq` transitively exposed these via `@reexport using -# SciMLBase` in DiffEqBase. v7 dropped that umbrella re-export, so users of -# `using DiffEqGPU` would otherwise have to add `using SciMLBase` just to -# build an `EnsembleProblem` to pass to DiffEqGPU's own ensemble algorithms. export EnsembleProblem, EnsembleSolution, EnsembleSerial, EnsembleThreads, EnsembleDistributed -# Re-export DAE init algorithms. v7's default is `CheckInit` (validate-only), -# which doesn't work for OOP `SVector` mass-matrix problems. Users solving -# such DAEs alongside DiffEqGPU's GPU ensemble paths need easy access to the -# pre-v7 default `BrownFullBasicInit` (auto-fix) without an extra `using -# DiffEqBase`. export BrownFullBasicInit, CheckInit export EnsembleCPUArray, EnsembleGPUArray, EnsembleGPUKernel, LinSolveGPUSplitFactorize diff --git a/src/ensemblegpuarray/callbacks.jl b/src/ensemblegpuarray/callbacks.jl index 6e542642..955afbd1 100644 --- a/src/ensemblegpuarray/callbacks.jl +++ b/src/ensemblegpuarray/callbacks.jl @@ -17,15 +17,6 @@ function generate_callback(callback::ContinuousCallback, I, ensemblealg) return nothing end - # DiffEqBase v7's `apply_callback!` for `VectorContinuousCallback` invokes - # `callback.affect!(integrator, simultaneous_events::Vector{Int8})` once per - # step. Each entry of the mask is 0 (no trigger), -1 (upcrossing) or - # +1 (downcrossing) — see OrdinaryDiffEq v7 NEWS.md, "Breaking: - # VectorContinuousCallback affect! signature changed". We copy the host - # mask to a backend-native array, dispatch one GPU thread per trajectory, - # and route up/down crossings to the user's original `affect!` / - # `affect_neg!`. v7 no longer dispatches to `VectorContinuousCallback`'s - # `affect_neg!` field, so we don't supply one. affect! = function (integrator, simultaneous_events::AbstractVector) version = get_backend(integrator.u) wgs = workgroupsize(version, size(integrator.u, 2)) diff --git a/src/ensemblegpuarray/kernels.jl b/src/ensemblegpuarray/kernels.jl index 589a0a88..d1d4925d 100644 --- a/src/ensemblegpuarray/kernels.jl +++ b/src/ensemblegpuarray/kernels.jl @@ -152,13 +152,6 @@ end @views @inbounds out[i] = condition(u[:, i], t, FakeIntegrator(u[:, i], t, p[:, i])) end -# v7: per-trajectory dispatch driven by the `simultaneous_events::Vector{Int8}` -# mask DiffEqBase passes to `VectorContinuousCallback`'s `affect!`. -1 marks an -# upcrossing → call the user's `affect!`; +1 marks a downcrossing → call -# `affect_neg!`. (See OrdinaryDiffEq v7 NEWS.md, "Breaking: -# VectorContinuousCallback affect! signature changed".) Iterating one thread -# per trajectory replaces the v6 `for i in event_idx` loop, which only worked -# because v6 passed the index of the *first* triggering trajectory as a scalar. @kernel function continuous_affect!_kernel( affect!, affect_neg!, simultaneous_events, u, t, p ) diff --git a/src/ensemblegpukernel/linalg/lu.jl b/src/ensemblegpukernel/linalg/lu.jl index 207f6fe6..6698ed5c 100644 --- a/src/ensemblegpukernel/linalg/lu.jl +++ b/src/ensemblegpukernel/linalg/lu.jl @@ -2,11 +2,7 @@ # https://github.com/JuliaArrays/StaticArrays.jl/blob/master/src/lu.jl # LU decomposition -pivot_options = if isdefined(LinearAlgebra, :PivotingStrategy) # introduced in Julia v1.7 - (:(Val{true}), :(Val{false}), :NoPivot, :RowMaximum) -else - (:(Val{true}), :(Val{false})) -end +pivot_options = (:(Val{true}), :(Val{false}), :NoPivot, :RowMaximum) for pv in pivot_options # ... define each `pivot::Val{true/false}` method individually to avoid ambiguties @eval function static_lu(A::StaticLUMatrix, pivot::$pv; check = true) @@ -39,11 +35,7 @@ function _first_zero_on_diagonal(A::StaticLUMatrix{M, N, T}) where {M, N, T} end @generated function _lu(A::StaticLUMatrix{M, N, T}, pivot, check) where {M, N, T} - _pivot = if isdefined(LinearAlgebra, :PivotingStrategy) # v1.7 feature - pivot === RowMaximum ? Val(true) : pivot === NoPivot ? Val(false) : pivot() - else - pivot() - end + _pivot = pivot === RowMaximum ? Val(true) : pivot === NoPivot ? Val(false) : pivot() return quote L, U, P = __lu(A, $(_pivot)) if check diff --git a/test/distributed_multi_gpu.jl b/test/distributed_multi_gpu.jl index b5346eff..db61d0f5 100644 --- a/test/distributed_multi_gpu.jl +++ b/test/distributed_multi_gpu.jl @@ -1,7 +1,7 @@ using Distributed addprocs(2) @everywhere using DiffEqGPU, OrdinaryDiffEq, Test, Random -@everywhere using OrdinaryDiffEqStabilizedRK: ROCK4 # v7 narrowed umbrella exports +@everywhere using OrdinaryDiffEqStabilizedRK: ROCK4 @everywhere include("utils.jl") @everywhere begin diff --git a/test/ensemblegpuarray.jl b/test/ensemblegpuarray.jl index aa642966..87764d69 100644 --- a/test/ensemblegpuarray.jl +++ b/test/ensemblegpuarray.jl @@ -1,6 +1,4 @@ using DiffEqGPU, OrdinaryDiffEq, Test -# v7's umbrella narrowed its solver re-exports; pull every non-default solver -# this file references from its sublibrary explicitly. using OrdinaryDiffEqRosenbrock: Rodas5 using OrdinaryDiffEqSDIRK: TRBDF2 using OrdinaryDiffEqStabilizedRK: ROCK4 diff --git a/test/ensemblegpuarray_inputtypes.jl b/test/ensemblegpuarray_inputtypes.jl index 8065ffd0..33fa123d 100644 --- a/test/ensemblegpuarray_inputtypes.jl +++ b/test/ensemblegpuarray_inputtypes.jl @@ -1,5 +1,3 @@ -# OrdinaryDiffEq v7 no longer re-exports SciMLBase, so pull SciMLBase in -# directly — this test references `SciMLBase.FullSpecialize` on line 17. using OrdinaryDiffEq, DiffEqGPU, ForwardDiff, Test using SciMLBase diff --git a/test/ensemblegpuarray_oop.jl b/test/ensemblegpuarray_oop.jl index 80e61ca0..7fe33ea6 100644 --- a/test/ensemblegpuarray_oop.jl +++ b/test/ensemblegpuarray_oop.jl @@ -1,5 +1,5 @@ using DiffEqGPU, OrdinaryDiffEq, StaticArrays -using OrdinaryDiffEqSDIRK: TRBDF2 # not in OrdinaryDiffEq v7 umbrella exports +using OrdinaryDiffEqSDIRK: TRBDF2 include("utils.jl") diff --git a/test/gpu_kernel_de/stiff_ode/gpu_ode_discrete_callbacks.jl b/test/gpu_kernel_de/stiff_ode/gpu_ode_discrete_callbacks.jl index de72a77e..8a82a17b 100644 --- a/test/gpu_kernel_de/stiff_ode/gpu_ode_discrete_callbacks.jl +++ b/test/gpu_kernel_de/stiff_ode/gpu_ode_discrete_callbacks.jl @@ -1,7 +1,4 @@ using DiffEqGPU, OrdinaryDiffEq, StaticArrays, LinearAlgebra -# OrdinaryDiffEq v7's umbrella only re-exports Rosenbrock23 and Rodas5P from -# the Rosenbrock family (see NEWS.md "Package scope reduction"). Pull Rodas4 -# from its sublibrary explicitly. using OrdinaryDiffEqRosenbrock: Rodas4 @info "Callbacks" diff --git a/test/gpu_kernel_de/stiff_ode/gpu_ode_mass_matrix.jl b/test/gpu_kernel_de/stiff_ode/gpu_ode_mass_matrix.jl index c946caba..e35fd652 100644 --- a/test/gpu_kernel_de/stiff_ode/gpu_ode_mass_matrix.jl +++ b/test/gpu_kernel_de/stiff_ode/gpu_ode_mass_matrix.jl @@ -35,14 +35,6 @@ monteprob = EnsembleProblem(prob, safetycopy = false) alg = GPURosenbrock23() -# OrdinaryDiffEq v7 changed the default DAE initialization from -# `BrownFullBasicInit` (auto-fix) to `CheckInit` (validate-only). SciMLBase's -# OOP `CheckInit` then calls `tmp .= …` on the f-evaluation result, but for -# an out-of-place `SVector` problem that result is itself an `SVector`, so -# the in-place broadcast errors with `setindex!(::SVector, …)`. Pass the -# pre-v7 default explicitly to restore the auto-fix behaviour for the bench -# solve. See OrdinaryDiffEq v7 NEWS.md, "Default DAE initialization changed -# to CheckInit". bench_sol = solve( prob, Rosenbrock23(), dt = 0.1, abstol = 1.0f-5, reltol = 1.0f-5, initializealg = BrownFullBasicInit() diff --git a/test/gpu_kernel_de/stiff_ode/gpu_ode_modelingtoolkit_dae.jl b/test/gpu_kernel_de/stiff_ode/gpu_ode_modelingtoolkit_dae.jl index df4c3a88..8b449fb7 100644 --- a/test/gpu_kernel_de/stiff_ode/gpu_ode_modelingtoolkit_dae.jl +++ b/test/gpu_kernel_de/stiff_ode/gpu_ode_modelingtoolkit_dae.jl @@ -53,10 +53,6 @@ monteprob = SciMLBase.EnsembleProblem(prob, safetycopy = false) adaptive = false ) @test length(sol.u) == 2 - # `sol.u[1].u[end]` rather than `sol.u[1][end]`: under RecursiveArrayTools v4 - # an `ODESolution` is an `AbstractArray` and `[end]` returns the last scalar - # element, not the last timestep. See OrdinaryDiffEq v7 NEWS.md, "ODESolution - # is now an AbstractArray". @test !any(isnan, sol.u[1].u[end]) @test abs(sol.u[1].u[end][1] + sol.u[1].u[end][2] - 1.0f0) < 0.01f0 end From 6a3afdb449493201883b78b45b4f3df173f4ab3a Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Wed, 29 Apr 2026 07:40:06 -0400 Subject: [PATCH 2/9] Remove dangling comment in src/DiffEqGPU.jl --- src/DiffEqGPU.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/DiffEqGPU.jl b/src/DiffEqGPU.jl index f6407daa..00ee068b 100644 --- a/src/DiffEqGPU.jl +++ b/src/DiffEqGPU.jl @@ -87,5 +87,4 @@ export GPURosenbrock23, GPURodas4, GPURodas5P, GPUKvaerno3, GPUKvaerno5 export terminate! -# This symbol is only defined on Julia versions that support extensions end # module From 702795dc2b4289a3e2ac74f7408eda82dc83b1c2 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Wed, 29 Apr 2026 07:56:06 -0400 Subject: [PATCH 3/9] Ensure correct compat in Project.toml files --- test/Project.toml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/test/Project.toml b/test/Project.toml index 37cffef5..80b1debd 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -34,26 +34,26 @@ pocl_jll = "627d6b7a-bbe6-5189-83e7-98cc0a5aeadd" [compat] Adapt = "4" BenchmarkTools = "1" -CUDA = "5, 6" -DiffEqDevTools = "2, 3" +CUDA = "6" +DiffEqDevTools = "3" DiffEqGPU = "3" -ForwardDiff = "0.10.38, 1" +ForwardDiff = "1" GPUArraysCore = "0.2" -JLArrays = "0.1, 0.2, 0.3" +JLArrays = "0.3" KernelAbstractions = "0.9" ModelingToolkit = "11.17.0" -OpenCL = "0.9, 0.10" -Optimization = "4, 5" +OpenCL = "0.10" +Optimization = "5" OptimizationOptimisers = "0.3" -OrdinaryDiffEq = "6, 7" -OrdinaryDiffEqRosenbrock = "1, 2" -OrdinaryDiffEqSDIRK = "1, 2" -OrdinaryDiffEqStabilizedRK = "1, 2" +OrdinaryDiffEq = "7" +OrdinaryDiffEqRosenbrock = "2" +OrdinaryDiffEqSDIRK = "2" +OrdinaryDiffEqStabilizedRK = "2" SafeTestsets = "0.1" -SciMLBase = "2.144, 3" +SciMLBase = "3" StaticArrays = "1.9" Statistics = "1" -StochasticDiffEq = "6, 7" +StochasticDiffEq = "7" TOML = "1" Zygote = "0.7.3" -pocl_jll = "6, 7" +pocl_jll = "7" From ef297165c98f750f3a6f46c427b9f1202bcfb627 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Wed, 29 Apr 2026 08:11:07 -0400 Subject: [PATCH 4/9] Update docs/Project.toml compat to latest majors --- docs/Project.toml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/Project.toml b/docs/Project.toml index 19c01160..b9ae7614 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -21,20 +21,20 @@ StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0" SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5" [compat] -Adapt = "3, 4" +Adapt = "4" BenchmarkTools = "1" -CUDA = "4, 5, 6" -DiffEqBase = "6.120, 7" -DiffEqGPU = "1,2, 3" +CUDA = "6" +DiffEqBase = "7" +DiffEqGPU = "3" Documenter = "1" -Flux = "0.13, 0.14, 0.15, 0.16" -ForwardDiff = "0.10, 1" -ModelingToolkit = "9, 10, 11" -OrdinaryDiffEq = "6, 7" +Flux = "0.16" +ForwardDiff = "1" +ModelingToolkit = "11" +OrdinaryDiffEq = "7" Plots = "1" -SafeTestsets = "0.0.1, 0.1" +SafeTestsets = "0.1" SciMLSensitivity = "7" StaticArrays = "1" Statistics = "1" -StochasticDiffEq = "6.57, 7" +StochasticDiffEq = "7" SymbolicIndexingInterface = "0.3" From 683de9081ba3883df16a20990a624bafa221c63f Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Wed, 29 Apr 2026 05:16:33 -0700 Subject: [PATCH 5/9] Apply suggestion from @ChrisRackauckas --- test/Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Project.toml b/test/Project.toml index 88a5c277..80b1debd 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -35,7 +35,7 @@ pocl_jll = "627d6b7a-bbe6-5189-83e7-98cc0a5aeadd" Adapt = "4" BenchmarkTools = "1" CUDA = "6" -DiffEqDevTools = "4" +DiffEqDevTools = "3" DiffEqGPU = "3" ForwardDiff = "1" GPUArraysCore = "0.2" From e4e5d0da65fc3744d57e743f9ae59d9cefb4f82a Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Wed, 29 Apr 2026 08:47:27 -0400 Subject: [PATCH 6/9] Resolve docs conflict by removing Flux and SciMLSensitivity --- docs/Project.toml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/Project.toml b/docs/Project.toml index b9ae7614..288ab8e0 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -6,7 +6,6 @@ DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" DiffEqGPU = "071ae1c0-96b5-11e9-1965-c90190d839ea" Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b" Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" -Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" @@ -14,7 +13,6 @@ OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" -SciMLSensitivity = "1ed8b502-d754-442c-8d5d-10ac956f44a1" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0" @@ -27,13 +25,11 @@ CUDA = "6" DiffEqBase = "7" DiffEqGPU = "3" Documenter = "1" -Flux = "0.16" ForwardDiff = "1" ModelingToolkit = "11" OrdinaryDiffEq = "7" Plots = "1" SafeTestsets = "0.1" -SciMLSensitivity = "7" StaticArrays = "1" Statistics = "1" StochasticDiffEq = "7" From 20ffb16785f60d0ad88096b87870f0373ac8a913 Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Wed, 29 Apr 2026 17:47:52 -0400 Subject: [PATCH 7/9] Preserve Flux/SciMLSensitivity content in docs while fixing build conflict --- docs/src/examples/ad.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/examples/ad.md b/docs/src/examples/ad.md index 37bc188a..e9f2deb3 100644 --- a/docs/src/examples/ad.md +++ b/docs/src/examples/ad.md @@ -4,7 +4,7 @@ and thus can be thrown into deep learning training loops. The following is an example of this use: -```@example ad +```julia using OrdinaryDiffEq, SciMLSensitivity, Flux, DiffEqGPU, CUDA CUDA.allowscalar(false) From d2191973c65ba7325e3a306b2246c205e14a2b85 Mon Sep 17 00:00:00 2001 From: Christopher Rackauckas Date: Thu, 30 Apr 2026 00:50:58 -0700 Subject: [PATCH 8/9] Apply suggestion from @ChrisRackauckas --- docs/src/examples/ad.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/examples/ad.md b/docs/src/examples/ad.md index e9f2deb3..37bc188a 100644 --- a/docs/src/examples/ad.md +++ b/docs/src/examples/ad.md @@ -4,7 +4,7 @@ and thus can be thrown into deep learning training loops. The following is an example of this use: -```julia +```@example ad using OrdinaryDiffEq, SciMLSensitivity, Flux, DiffEqGPU, CUDA CUDA.allowscalar(false) From 45cecfd5cabdfd52d61cf425ce94411d3db3b4df Mon Sep 17 00:00:00 2001 From: ChrisRackauckas-Claude Date: Thu, 30 Apr 2026 03:53:08 -0400 Subject: [PATCH 9/9] Add Flux and SciMLSensitivity back to docs/Project.toml The ad.md example uses `@example ad` blocks with Flux and SciMLSensitivity, so they need to be present as docs deps. Co-Authored-By: Chris Rackauckas --- docs/Project.toml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/Project.toml b/docs/Project.toml index 288ab8e0..b9ae7614 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -6,6 +6,7 @@ DiffEqBase = "2b5f629d-d688-5b77-993f-72d75c75574e" DiffEqGPU = "071ae1c0-96b5-11e9-1965-c90190d839ea" Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b" Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4" +Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" @@ -13,6 +14,7 @@ OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +SciMLSensitivity = "1ed8b502-d754-442c-8d5d-10ac956f44a1" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0" @@ -25,11 +27,13 @@ CUDA = "6" DiffEqBase = "7" DiffEqGPU = "3" Documenter = "1" +Flux = "0.16" ForwardDiff = "1" ModelingToolkit = "11" OrdinaryDiffEq = "7" Plots = "1" SafeTestsets = "0.1" +SciMLSensitivity = "7" StaticArrays = "1" Statistics = "1" StochasticDiffEq = "7"