diff --git a/.buildkite/runtests.yml b/.buildkite/runtests.yml index 47456437..4a25c3a8 100644 --- a/.buildkite/runtests.yml +++ b/.buildkite/runtests.yml @@ -4,6 +4,7 @@ steps: setup: version: - "1" + - "1.9" env: GROUP: CUDA plugins: @@ -59,7 +60,7 @@ steps: setup: version: - "1" - - "1.9-nightly" + - "1.9" env: GROUP: oneAPI plugins: @@ -69,8 +70,11 @@ steps: - | julia --project=test -e ' import Pkg - Pkg.add(; name = "oneAPI")' - rm test/Manifest.toml + Pkg.develop(; name="oneAPI") + + println("+++ :julia: Building support library") + include(joinpath(Pkg.devdir(), "oneAPI", "deps", "build_ci.jl")) + Pkg.activate()' julia --project -e ' import Pkg println("+++ :julia: Running tests") @@ -86,8 +90,7 @@ steps: matrix: setup: version: - - "1" - - "1.9-nightly" + - "1.9" env: GROUP: Metal plugins: diff --git a/src/ensemblegpukernel/callbacks.jl b/src/ensemblegpukernel/callbacks.jl index d95c251a..aa537a9c 100644 --- a/src/ensemblegpukernel/callbacks.jl +++ b/src/ensemblegpukernel/callbacks.jl @@ -47,7 +47,7 @@ struct GPUContinuousCallback{F1, F2, F3, F4, F5, F6, T, T2, T3, I, R} <: reltol::T2, repeat_nudge::T3) where {F1, F2, F3, F4, F5, F6, T, T2, T3, I, R, - } + } if save_positions != (false, false) error("Callback `save_positions` are incompatible with kernel-based GPU ODE solvers due requiring static sizing. Please ensure `save_positions = (false,false)` is set in all callback definitions used with such solvers.") end diff --git a/src/ensemblegpukernel/integrators/integrator_utils.jl b/src/ensemblegpukernel/integrators/integrator_utils.jl index f2d4f7da..bad07883 100644 --- a/src/ensemblegpukernel/integrators/integrator_utils.jl +++ b/src/ensemblegpukernel/integrators/integrator_utils.jl @@ -54,7 +54,7 @@ end IIP, S, T, - } +} integrator.retcode = retcode end @@ -156,7 +156,7 @@ end S, T, T1, - } +} # Can get rid of an allocation here with a function # get_tmp_arr(integrator.cache) which gives a pointer to some # cache array which can be modified. @@ -185,7 +185,7 @@ end S, T, T1, - } +} _change_t_via_interpolation!(integrator, t, modify_save_endpoint) end @@ -322,7 +322,7 @@ end IIP, S, T, - } +} return nothing end @@ -333,7 +333,7 @@ end }, callback, abst) where {AlgType <: GPUODEAlgorithm, IIP, S, T - } +} if abst == integrator.t tmp = integrator.u elseif abst == integrator.tprev diff --git a/src/ensemblegpukernel/integrators/nonstiff/interpolants.jl b/src/ensemblegpukernel/integrators/nonstiff/interpolants.jl index 134ea1aa..7163ec4b 100644 --- a/src/ensemblegpukernel/integrators/nonstiff/interpolants.jl +++ b/src/ensemblegpukernel/integrators/nonstiff/interpolants.jl @@ -8,7 +8,7 @@ IIP, S, T, - } +} y₁ = integ.u k1 = integ.k1 k2 = integ.k2 diff --git a/src/ensemblegpukernel/integrators/stiff/types.jl b/src/ensemblegpukernel/integrators/stiff/types.jl index f61e4a14..021f8bf1 100644 --- a/src/ensemblegpukernel/integrators/stiff/types.jl +++ b/src/ensemblegpukernel/integrators/stiff/types.jl @@ -3,13 +3,13 @@ IIP, S, T, - })(t) where { +})(t) where { AlgType <: GPUODEAlgorithm, IIP, S, T, - } +} Θ = (t - integrator.tprev) / integrator.dt _ode_interpolant(Θ, integrator.dt, integrator.uprev, integrator) end diff --git a/test/ensemblegpuarray.jl b/test/ensemblegpuarray.jl index 0979e476..53db34f9 100644 --- a/test/ensemblegpuarray.jl +++ b/test/ensemblegpuarray.jl @@ -43,6 +43,8 @@ solve(monteprob,TRBDF2(),EnsembleGPUArray(backend),dt=0.1,trajectories=2,saveat= @test_broken solve(monteprob,TRBDF2(),EnsembleGPUArray(backend),dt=0.1,trajectories=2,saveat=1.0f0) =# +GROUP == "AMDGPU" && return + @info "Implicit Methods" function lorenz_jac(J, u, p, t) diff --git a/test/ensemblegpuarray_oop.jl b/test/ensemblegpuarray_oop.jl index f7c8ca17..37a0660e 100644 --- a/test/ensemblegpuarray_oop.jl +++ b/test/ensemblegpuarray_oop.jl @@ -34,6 +34,9 @@ prob_func = (prob, i, repeat) -> remake(prob, p = rand(Float32, 3) .* p) monteprob = EnsembleProblem(prob, prob_func = prob_func, safetycopy = false) @time sol = solve(monteprob, Tsit5(), EnsembleGPUArray(backend), trajectories = 10_000, saveat = 1.0f0) + +GROUP == "AMDGPU" && return + @time sol = solve(monteprob, Rosenbrock23(), EnsembleGPUArray(backend), trajectories = 10_000, saveat = 1.0f0) diff --git a/test/runtests.jl b/test/runtests.jl index 175c36ea..95afa694 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -79,7 +79,8 @@ if GROUP in SUPPORTS_DOUBLE_PRECISION end end -if GROUP == "CUDA" +# Callbacks currently error on v1.10 +if GROUP == "CUDA" && VERSION <= v"1.9" # Causes dynamic function invocation @time @testset "GPU Kernelized Non Stiff ODE ContinuousCallback" begin include("gpu_kernel_de/gpu_ode_continuous_callbacks.jl")