SciML / DiffEqGPU.jl

GPU-acceleration routines for DifferentialEquations.jl and the broader SciML scientific machine learning ecosystem
https://docs.sciml.ai/DiffEqGPU/stable/
MIT License
274 stars 28 forks source link

GPUVern7 for EnsembleGPUKernel #189

Closed utkarsh530 closed 1 year ago

utkarsh530 commented 1 year ago

Implements Vern7 for EnsembleGPUKernel methods.

MWE:

using DiffEqGPU, OrdinaryDiffEq, CUDA, StaticArrays, BenchmarkTools, LinearAlgebra
function lorenz(u, p, t)
    σ = p[1]
    ρ = p[2]
    β = p[3]
    du1 = σ * (u[2] - u[1])
    du2 = u[1] * (ρ - u[3]) - u[2]
    du3 = u[1] * u[2] - β * u[3]
    return @SVector [du1, du2, du3]
end

u0 = @SVector [1.0f0; 0.0f0; 0.0f0]
tspan = (0.0f0, 10.0f0)
p = @SVector [10.0f0, 28.0f0, 8 / 3.0f0]
prob = ODEProblem(lorenz, u0, tspan, p)
prob_func = (prob, i, repeat) -> remake(prob, p = p)
monteprob = EnsembleProblem(prob, prob_func = prob_func, safetycopy = false)

sol = solve(monteprob, GPUVern7(), EnsembleGPUKernel(), trajectories = 10000,
                       adaptive = false, dt = 0.1f0)

osol = solve(prob, Vern7(), adaptive = false, dt = 0.1f0)

norm(sol[1].u[end] - osol[end]) 
codecov[bot] commented 1 year ago

Codecov Report

Merging #189 (51953ae) into master (429a365) will not change coverage. The diff coverage is 0.00%.

@@           Coverage Diff           @@
##           master    #189    +/-   ##
=======================================
  Coverage    0.00%   0.00%            
=======================================
  Files           5       8     +3     
  Lines         777    1244   +467     
=======================================
- Misses        777    1244   +467     
Impacted Files Coverage Δ
src/DiffEqGPU.jl 0.00% <0.00%> (ø)
src/integrators/interpolants.jl 0.00% <0.00%> (ø)
src/integrators/types.jl 0.00% <0.00%> (ø)
src/perform_step/gpu_vern7_perform_step.jl 0.00% <0.00%> (ø)
src/solve.jl 0.00% <0.00%> (ø)
src/tableaus/verner_tableaus.jl 0.00% <0.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

utkarsh530 commented 1 year ago

@ChrisRackauckas, please review.

Some refactoring and optimizations will be done after #184.

ChrisRackauckas commented 1 year ago

Tests are failing. That needs to be figured out before merging.

ChrisRackauckas commented 1 year ago

Real test failure.