diff --git a/test/cuda_tests.jl b/test/cuda_tests.jl index bd992e3fc..d0be7175f 100644 --- a/test/cuda_tests.jl +++ b/test/cuda_tests.jl @@ -43,3 +43,32 @@ end end end + +@testitem "Termination Conditions: Allocations" tags=[:cuda] begin + using CUDA, NonlinearSolveBase, Test, LinearAlgebra + CUDA.allowscalar(false) + du = cu(rand(4)) + u = cu(rand(4)) + uprev = cu(rand(4)) + TERMINATION_CONDITIONS = [ + RelTerminationMode, AbsTerminationMode + ] + NORM_TERMINATION_CONDITIONS = [ + AbsNormTerminationMode, RelNormTerminationMode, RelNormSafeTerminationMode, + AbsNormSafeTerminationMode, RelNormSafeBestTerminationMode, AbsNormSafeBestTerminationMode + ] + + @testset begin + @testset "Mode: $(tcond)" for tcond in TERMINATION_CONDITIONS + @test_nowarn NonlinearSolveBase.check_convergence( + tcond(), du, u, uprev, 1e-3, 1e-3) + end + + @testset "Mode: $(tcond)" for tcond in NORM_TERMINATION_CONDITIONS + for nfn in (Base.Fix1(maximum, abs), Base.Fix2(norm, 2), Base.Fix2(norm, Inf)) + @test_nowarn NonlinearSolveBase.check_convergence( + tcond(nfn), du, u, uprev, 1e-3, 1e-3) + end + end + end +end