CompatHelper: bump compat for CUDA in [weakdeps] to 6, (keep existing compat)#2925
Conversation
700969d to
785415b
Compare
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2925 +/- ##
==========================================
+ Coverage 96.84% 96.87% +0.03%
==========================================
Files 642 642
Lines 49824 49808 -16
==========================================
Hits 48250 48250
+ Misses 1574 1558 -16
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
…ing compat) (#2926) Co-authored-by: CompatHelper Julia <compathelper_noreply@julialang.org>
JoshuaLampert
left a comment
There was a problem hiding this comment.
We need to wait for JuliaDiff/SparseMatrixColorings.jl#313.
|
Eventually we can drop the CUDA dependency and only depend on for our extension |
JoshuaLampert
left a comment
There was a problem hiding this comment.
CI uses CUDA.jl v6.1. So this should be ready to merge.
ranocha
left a comment
There was a problem hiding this comment.
CUDA tests fail:
elixir_euler_source_terms.jl Float32 / CUDA: Error During Test at /root/.cache/julia-buildkite-plugin/depots/019658de-efdd-4c0c-a098-7a91a0dafb4d/packages/TrixiTest/6CVoC/src/macros.jl:196
Got exception outside of a @test
LoadError: UndefVarError: `local_toolkit` not defined
Stacktrace:
[1] trixi_backend_info!(setup::Vector{Pair{String, Any}}, ::CUDACore.CUDAKernels.CUDABackend)
@ TrixiCUDAExt /var/lib/buildkite-agent/builds/gpuci-7/julialang/trixi-dot-jl/ext/TrixiCUDAExt.jl:38
[2] initialize_summary_callback(cb::SciMLBase.DiscreteCallback{typeof(Trixi.summary_callback), typeof(Trixi.summary_callback), Trixi.var"#initialize#1676"{Bool}, typeof(Trixi.finalize_summary_callback), Nothing, Tuple{}}, u::CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, t::Float64, integrator::OrdinaryDiffEqCore.ODEIntegrator{OrdinaryDiffEqLowStorageRK.CarpenterKennedy2N54{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), FastBroadcast.Serial}, true, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, Nothing, Float64, Trixi.SemidiscretizationHyperbolic{Trixi.P4estMesh{3, 3, Float64, Static.False, P4est.PointerWrappers.PointerWrapper{P4est.LibP4est.p8est}, P4est.PointerWrappers.PointerWrapper{P4est.LibP4est.p8est_ghost_t}, 5, 4}, Trixi.CompressibleEulerEquations3D{Float32}, typeof(Trixi.initial_condition_convergence_test), Trixi.BoundaryConditionPeriodic, typeof(Trixi.source_terms_convergence_test), Trixi.DGSEM{Trixi.LobattoLegendreBasis{Float32, 4, StaticArraysCore.SVector{4, Float32}, CUDACore.CuArray{Float32, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 2, CUDACore.DeviceMemory}}, Trixi.LobattoLegendreMortarL2{Float32, 4, CUDACore.CuArray{Float32, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 2, CUDACore.DeviceMemory}}, Trixi.SurfaceIntegralWeakForm{Trixi.FluxLaxFriedrichs{typeof(Trixi.max_abs_speed_naive)}}, Trixi.VolumeIntegralWeakForm}, @NamedTuple{elements::Trixi.P4estElementContainer{3, Float32, Float32, 4, 5, 6, CUDACore.CuArray{Float32, 4, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 5, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 6, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 5, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}}, interfaces::Trixi.P4estInterfaceContainer{3, Float64, Float32, 4, 5, CUDACore.CuArray{Float32, 5, CUDACore.DeviceMemory}, Nothing, CUDACore.CuArray{Int64, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Tuple{Symbol, Symbol, Symbol}, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, Nothing, CUDACore.CuArray{Int64, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Tuple{Symbol, Symbol, Symbol}, 1, CUDACore.DeviceMemory}}, boundaries::Trixi.P4estBoundaryContainer{3, Float32, 4, CUDACore.CuArray{Float32, 4, CUDACore.DeviceMemory}, CUDACore.CuArray{Int64, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Tuple{Symbol, Symbol, Symbol}, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}}, mortars::Trixi.P4estMortarContainer{3, Float32, 4, 6, CUDACore.CuArray{Float32, 6, CUDACore.DeviceMemory}, CUDACore.CuArray{Int64, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Tuple{Symbol, Symbol, Symbol}, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Int64, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Tuple{Symbol, Symbol, Symbol}, 1, CUDACore.DeviceMemory}}, fstar_primary_threaded::Trixi.VecOfArrays{CUDACore.CuArray{Float32, 4, CUDACore.DeviceMemory}}, fstar_secondary_threaded::Trixi.VecOfArrays{CUDACore.CuArray{Float32, 4, CUDACore.DeviceMemory}}, fstar_tmp_threaded::Trixi.VecOfArrays{CUDACore.CuArray{Float32, 3, CUDACore.DeviceMemory}}, u_threaded::Trixi.VecOfArrays{CUDACore.CuArray{Float32, 3, CUDACore.DeviceMemory}}}}, Float64, Float64, Vector{CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}}, SciMLBase.ODESolution{Float32, 2, Vector{CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}}}, Nothing, SciMLBase.ODEProblem{CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, Tuple{Float64, Float64}, true, Trixi.SemidiscretizationHyperbolic{Trixi.P4estMesh{3, 3, Float64, Static.False, P4est.PointerWrappers.PointerWrapper{P4est.LibP4est.p8est}, P4est.PointerWrappers.PointerWrapper{P4est.LibP4est.p8est_ghost_t}, 5, 4}, Trixi.CompressibleEulerEquations3D{Float32}, typeof(Trixi.initial_condition_convergence_test), Trixi.BoundaryConditionPeriodic, typeof(Trixi.source_terms_convergence_test), Trixi.DGSEM{Trixi.LobattoLegendreBasis{Float32, 4, StaticArraysCore.SVector{4, Float32}, CUDACore.CuArray{Float32, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 2, CUDACore.DeviceMemory}}, Trixi.LobattoLegendreMortarL2{Float32, 4, CUDACore.CuArray{Float32, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 2, CUDACore.DeviceMemory}}, Trixi.SurfaceIntegralWeakForm{Trixi.FluxLaxFriedrichs{typeof(Trixi.max_abs_speed_naive)}}, Trixi.VolumeIntegralWeakForm}, @NamedTuple{elements::Trixi.P4estElementContainer{3, Float32, Float32, 4, 5, 6, CUDACore.CuArray{Float32, 4, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 5, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 6, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 5, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}}, interfaces::Trixi.P4estInterfaceContainer{3, Float64, Float32, 4, 5, CUDACore.CuArray{Float32, 5, CUDACore.DeviceMemory}, Nothing, CUDACore.CuArray{Int64, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Tuple{Symbol, Symbol, Symbol}, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, Nothing, CUDACore.CuArray{Int64, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Tuple{Symbol, Symbol, Symbol}, 1, CUDACore.DeviceMemory}}, boundaries::Trixi.P4estBoundaryContainer{3, Float32, 4, CUDACore.CuArray{Float32, 4, CUDACore.DeviceMemory}, CUDACore.CuArray{Int64, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Tuple{Symbol, Symbol, Symbol}, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}}, mortars::Trixi.P4estMortarContainer{3, Float32, 4, 6, CUDACore.CuArray{Float32, 6, CUDACore.DeviceMemory}, CUDACore.CuArray{Int64, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Tuple{Symbol, Symbol, Symbol}, 2, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Int64, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Tuple{Symbol, Symbol, Symbol}, 1, CUDACore.DeviceMemory}}, fstar_primary_threaded::Trixi.VecOfArrays{CUDACore.CuArray{Float32, 4, CUDACore.DeviceMemory}}, fstar_secondary_threaded::Trixi.VecOfArrays{CUDACore.CuArray{Float32, 4, CUDACore.DeviceMemory}}, fstar_tmp_threaded::Trixi.VecOfArrays{CUDACore.CuArray{Float32, 3, CUDACore.DeviceMemory}}, u_threaded::Trixi.VecOfArrays{CUDACore.CuArray{Float32, 3, CUDACore.DeviceMemory}}}}, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, typeof(Trixi.rhs!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing, Nothing, Nothing}, @Kwargs{}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqLowStorageRK.CarpenterKennedy2N54{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), FastBroadcast.Serial}, OrdinaryDiffEqCore.InterpolationData{SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, typeof(Trixi.rhs!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing, Nothing, Nothing}, Vector{CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}}, Vector{Float64}, Vector{Vector{CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}}}, Nothing, OrdinaryDiffEqLowStorageRK.LowStorageRK2NCache{CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, OrdinaryDiffEqLowStorageRK.LowStorageRK2NConstantCache{4, Float32, Float64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), FastBroadcast.Serial}, Nothing}, SciMLBase.DEStats, Nothing, Nothing, Nothing, Nothing}, SciMLBase.ODEFunction{true, SciMLBase.FullSpecialize, typeof(Trixi.rhs!), LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED), Nothing, Nothing, Nothing, Nothing}, OrdinaryDiffEqLowStorageRK.LowStorageRK2NCache{CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, CUDACore.CuArray{Float32, 1, CUDACore.DeviceMemory}, OrdinaryDiffEqLowStorageRK.LowStorageRK2NConstantCache{4, Float32, Float64}, typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivial_limiter!), FastBroadcast.Serial}, OrdinaryDiffEqCore.DEOptions{Float32, Float32, Float64, Float64, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(LinearAlgebra.opnorm), Nothing, SciMLBase.CallbackSet{Tuple{}, Tuple{SciMLBase.DiscreteCallback{typeof(Trixi.summary_callback), typeof(Trixi.summary_callback), Trixi.var"#initialize#1676"{Bool}, typeof(Trixi.finalize_summary_callback), Nothing, Tuple{}}, SciMLBase.DiscreteCallback{Trixi.var"#1682#1689"{Int64}, Trixi.AnalysisCallback{Trixi.LobattoLegendreAnalyzer{Float64, 7, StaticArraysCore.SVector{7, Float64}, Matrix{Float64}}, Tuple{typeof(Trixi.entropy_timederivative)}, StaticArraysCore.SVector{5, Float64}, @NamedTuple{u_local::StrideArraysCore.StaticStrideArray{Float64, 4, (1, 2, 3, 4), Tuple{Static.StaticInt{5}, Static.StaticInt{7}, Static.StaticInt{7}, Static.StaticInt{7}}, NTuple{4, Nothing}, NTuple{4, Static.StaticInt{1}}, 1715}, u_tmp1::StrideArraysCore.StaticStrideArray{Float64, 4, (1, 2, 3, 4), Tuple{Static.StaticInt{5}, Static.StaticInt{7}, Static.StaticInt{4}, Static.StaticInt{4}}, NTuple{4, Nothing}, NTuple{4, Static.StaticInt{1}}, 560}, u_tmp2::StrideArraysCore.StaticStrideArray{Float64, 4, (1, 2, 3, 4), Tuple{Static.StaticInt{5}, Static.StaticInt{7}, Static.StaticInt{7}, Static.StaticInt{4}}, NTuple{4, Nothing}, NTuple{4, Static.StaticInt{1}}, 980}, x_local::StrideArraysCore.StaticStrideArray{Float64, 4, (1, 2, 3, 4), Tuple{Static.StaticInt{3}, Static.StaticInt{7}, Static.StaticInt{7}, Static.StaticInt{7}}, NTuple{4, Nothing}, NTuple{4, Static.StaticInt{1}}, 1029}, x_tmp1::StrideArraysCore.StaticStrideArray{Float64, 4, (1, 2, 3, 4), Tuple{Static.StaticInt{3}, Static.StaticInt{7}, Static.StaticInt{4}, Static.StaticInt{4}}, NTuple{4, Nothing}, NTuple{4, Static.StaticInt{1}}, 336}, x_tmp2::StrideArraysCore.StaticStrideArray{Float64, 4, (1, 2, 3, 4), Tuple{Static.StaticInt{3}, Static.StaticInt{7}, Static.StaticInt{7}, Static.StaticInt{4}}, NTuple{4, Nothing}, NTuple{4, Static.StaticInt{1}}, 588}, jacobian_local::StrideArraysCore.StaticStrideArray{Float64, 3, (1, 2, 3), Tuple{Static.StaticInt{7}, Static.StaticInt{7}, Static.StaticInt{7}}, Tuple{Nothing, Nothing, Nothing}, Tuple{Static.StaticInt{1}, Static.StaticInt{1}, Static.StaticInt{1}}, 343}, jacobian_tmp1::StrideArraysCore.StaticStrideArray{Float64, 3, (1, 2, 3), Tuple{Static.StaticInt{7}, Static.StaticInt{4}, Static.StaticInt{4}}, Tuple{Nothing, Nothing, Nothing}, Tuple{Static.StaticInt{1}, Static.StaticInt{1}, Static.StaticInt{1}}, 112}, jacobian_tmp2::StrideArraysCore.StaticStrideArray{Float64, 3, (1, 2, 3), Tuple{Static.StaticInt{7}, Static.StaticInt{7}, Static.StaticInt{4}}, Tuple{Nothing, Nothing, Nothing}, Tuple{Static.StaticInt{1}, Static.StaticInt{1}, Static.StaticInt{1}}, 196}}}, typeof(Trixi.initialize!), typeof(SciMLBase.FINALIZE_DEFAULT), Nothing, Tuple{}}, SciMLBase.DiscreteCallback{Trixi.AliveCallback, Trixi.AliveCallback, typeof(Trixi.initialize!), typeof(SciMLBase.FINALIZE_DEFAULT), Nothing, Tuple{}}, SciMLBase.DiscreteCallback{Trixi.SaveSolutionCallback{Int64, typeof(Trixi.cons2prim)}, Trixi.SaveSolutionCallback{Int64, typeof(Trixi.cons2prim)}, typeof(Trixi.initialize_save_cb!), typeof(SciMLBase.FINALIZE_DEFAULT), Nothing, Tuple{}}, SciMLBase.DiscreteCallback{Trixi.StepsizeCallback{Returns{Float64}, Returns{Float64}}, Trixi.StepsizeCallback{Returns{Float64}, Returns{Float64}}, typeof(Trixi.initialize!), typeof(SciMLBase.FINALIZE_DEFAULT), Nothing, Tuple{}}}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, Tuple{}, Tuple{}, DiffEqBase.DEVerbosity{true, SciMLLogging.Minimal, SciMLLogging.Minimal}, Nothing}, Nothing, Float32, Nothing, DiffEqBase.DefaultInit, Nothing, OrdinaryDiffEqCore.PIControllerCache{Float64, Float32}, Random.TaskLocalRNG, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}; reset_threads::Bool)
@ Trixi /var/lib/buildkite-agent/builds/gpuci-7/julialang/trixi-dot-jl/src/callbacks_step/summary.jl:226
[3] initialize_summary_callback
@ /var/lib/buildkite-agent/builds/gpuci-7/julialang/trixi-dot-jl/src/callbacks_step/summary.jl:153 [inlined]
[4] initialize
@ /var/lib/buildkite-agent/builds/gpuci-7/julialang/trixi-dot-jl/src/callbacks_step/summary.jl:20 [inlined]
CC @vchuravy
|
Looks like that is because CUDA.jl was split into subpackages in CUDA.jl v6. Now |
|
Is everything we need in the extension already defined CUDACore.jl, i.e., is it trivial to only depend on CUDACore.jl by essentially replacing |
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
|
Because the |
JoshuaLampert
left a comment
There was a problem hiding this comment.
From my point of view, this is ready and could be merged. Would you prefer to keep compatibility with CUDA.jl v5 (at least for some more time) @vchuravy? It would probably be messy to try to make Trixi.jl compatible with both CUDA.jl v5 and v6 at the same time since I think then the extension would need to be for CUDA (for the v5 case), CUDACore, and CUDATools (for the v6 case) with some @static ifs for the imports.
ranocha
left a comment
There was a problem hiding this comment.
Thanks for updating this to CUDA.jl v6, @JoshuaLampert! I would like to get the opinion of @vchuravy before merging this.
Co-authored-by: Valentin Churavy <v.churavy@gmail.com>
Co-authored-by: Joshua Lampert <51029046+JoshuaLampert@users.noreply.github.com>
There was a problem hiding this comment.
Do we loose anything by removing the NVML stuff, @vchuravy?
ranocha
left a comment
There was a problem hiding this comment.
Thanks!
@vchuravy and I discussed this offline: No, we don't lose anything in terms of capabilities. It just makes some query functions used in the summary callback a bit more tedious, but this does not matter (also not in terms of performance since it is only used once in a simulation).
This pull request changes the compat entry for the
CUDApackage from5.9.1to5.9.1, 6.This keeps the compat entries for earlier versions.
Note: I have not tested your package with this new compat entry.
It is your responsibility to make sure that your package tests pass before you merge this pull request.
Closes #2927.