diff --git a/test/runtests.jl b/test/runtests.jl index cb99cf9166f..3890024fa2e 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -191,6 +191,27 @@ function qa_group() return @time @safetestset "Quality Assurance Tests" include("qa/qa_tests.jl") end +function activate_gpu_env() + Pkg.activate(joinpath(@__DIR__, "gpu")) + Pkg.develop(PackageSpec(path = dirname(@__DIR__))) + return Pkg.instantiate() +end + +# Root (integration) GPU tests. The test/gpu environment pulls the full +# OrdinaryDiffEq stack plus the relevant sublibraries and runs on the self-hosted +# `gpu` runner (Julia 1, where [sources] is honored natively). Every file in +# test/gpu is included, so the set stays in sync as GPU tests are added or +# removed there without touching this dispatch. +function gpu_group() + is_APPVEYOR && return + activate_gpu_env() + gpudir = joinpath(@__DIR__, "gpu") + for f in sort(filter(f -> endswith(f, ".jl"), readdir(gpudir))) + @time @eval @safetestset $("GPU: " * f) include($(joinpath(gpudir, f))) + end + return nothing +end + @time begin # Monorepo sublibrary routing. The root reads GROUP to pick a `lib/` # sublibrary, transitively develops its `[sources]` on Julia < 1.11, then @@ -278,6 +299,7 @@ end "Downstream" => downstream_group, "AD" => ad_group, "ODEInterfaceRegression" => odeinterface_group, + "GPU" => gpu_group, ), # QA runs in the root test environment (no per-group Project.toml); # its body is the ExplicitImports testset, not the standard diff --git a/test/test_groups.toml b/test/test_groups.toml index b00bfe2f4eb..ce407bf197b 100644 --- a/test/test_groups.toml +++ b/test/test_groups.toml @@ -14,8 +14,6 @@ versions = ["lts", "1", "pre"] versions = ["lts", "1", "pre"] [AlgConvergence_I] versions = ["lts", "1", "pre"] -[AlgConvergence_II] -versions = ["lts", "1", "pre"] [AlgConvergence_III] versions = ["lts", "1", "pre"] [ModelingToolkit] @@ -33,3 +31,7 @@ versions = ["lts"] versions = ["lts", "1"] [ODEInterfaceRegression] versions = ["lts"] +[GPU] +versions = ["1"] +runner = ["self-hosted", "Linux", "X64", "gpu"] +timeout = 60