Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions test/distributed_multi_gpu.jl
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ monteprob = EnsembleProblem(prob, prob_func = prob_func_distributed)

@test length(filter(x -> x.u != sol.u[1].u, sol.u)) != 0 # 0 element array
@test length(filter(x -> x.u != sol2.u[6].u, sol.u)) != 0 # 0 element array
@test all(all(sol[i].prob.p .== pre_p_distributed[i] .* p) for i in 1:10)
@test all(all(sol2[i].prob.p .== pre_p_distributed[i] .* p) for i in 1:10)
@test all(all(sol.u[i].prob.p .== pre_p_distributed[i] .* p) for i in 1:10)
@test all(all(sol2.u[i].prob.p .== pre_p_distributed[i] .* p) for i in 1:10)

#To set 1 GPU per device:
#=
Expand Down
4 changes: 2 additions & 2 deletions test/ensemblegpuarray.jl
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ monteprob = EnsembleProblem(prob, prob_func = prob_func)

@test length(filter(x -> x.u != sol.u[1].u, sol.u)) != 0 # 0 element array
@test length(filter(x -> x.u != sol2.u[6].u, sol.u)) != 0 # 0 element array
@test all(all(sol[i].prob.p .== pre_p[i] .* p) for i in 1:10)
@test all(all(sol2[i].prob.p .== pre_p[i] .* p) for i in 1:10)
@test all(all(sol.u[i].prob.p .== pre_p[i] .* p) for i in 1:10)
@test all(all(sol2.u[i].prob.p .== pre_p[i] .* p) for i in 1:10)

@time solve(monteprob, Tsit5(), EnsembleCPUArray(), trajectories = 10, saveat = 1.0f0)
@time solve(monteprob, Tsit5(), EnsembleThreads(), trajectories = 10, saveat = 1.0f0)
Expand Down
2 changes: 1 addition & 1 deletion test/gpu_kernel_de/finite_diff.jl
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ for alg in (GPURosenbrock23(autodiff = false), GPURodas4(autodiff = false),
@info alg
sol = solve(monteprob, alg, EnsembleGPUKernel(backend, 0.0),
trajectories = 2, save_everystep = false, adaptive = true, dt = 0.01f0)
@test norm(sol[1].u - osol.u) < 2e-4
@test norm(sol.u[1].u - osol.u) < 2e-4

# massive threads
sol = solve(monteprob, alg, EnsembleGPUKernel(backend, 0.0),
Expand Down
16 changes: 8 additions & 8 deletions test/gpu_kernel_de/gpu_ode_continuous_callbacks.jl
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ for (alg, diffeq_alg) in zip(algs, diffeq_algs)
bench_sol = solve(prob, diffeq_alg,
adaptive = false, dt = 0.1f0, callback = cb, merge_callbacks = true)

@test norm(bench_sol.u - sol[1].u) < 2e-3
@test norm(bench_sol.u - sol.u[1].u) < 2e-3

@info "Callback: CallbackSets"

Expand All @@ -54,7 +54,7 @@ for (alg, diffeq_alg) in zip(algs, diffeq_algs)
bench_sol = solve(prob, diffeq_alg,
adaptive = false, dt = 0.1f0, callback = cb, merge_callbacks = true)

@test norm(bench_sol.u - sol[1].u) < 2e-3
@test norm(bench_sol.u - sol.u[1].u) < 2e-3

@info "saveat and callbacks"

Expand All @@ -67,7 +67,7 @@ for (alg, diffeq_alg) in zip(algs, diffeq_algs)
adaptive = false, dt = 1.0f0, callback = cb, merge_callbacks = true,
saveat = [0.0f0, 9.1f0])

@test norm(bench_sol.u - sol[1].u) < 2e-3
@test norm(bench_sol.u - sol.u[1].u) < 2e-3

@info "save_everystep and callbacks"

Expand All @@ -80,7 +80,7 @@ for (alg, diffeq_alg) in zip(algs, diffeq_algs)
adaptive = false, dt = 0.1f0, callback = cb, merge_callbacks = true,
save_everystep = false)

@test norm(bench_sol.u - sol[1].u) < 7e-4
@test norm(bench_sol.u - sol.u[1].u) < 7e-4

@info "Adaptive version"

Expand All @@ -94,7 +94,7 @@ for (alg, diffeq_alg) in zip(algs, diffeq_algs)
adaptive = true, save_everystep = false, dt = 0.1f0, callback = cb,
merge_callbacks = true)

@test norm(bench_sol.u - sol[1].u) < 2e-3
@test norm(bench_sol.u - sol.u[1].u) < 2e-3

@info "Callback: CallbackSets"

Expand All @@ -108,7 +108,7 @@ for (alg, diffeq_alg) in zip(algs, diffeq_algs)
adaptive = true, dt = 0.1f0, save_everystep = false, callback = cb,
merge_callbacks = true)

@test norm(bench_sol.u - sol[1].u) < 2e-3
@test norm(bench_sol.u - sol.u[1].u) < 2e-3

@info "saveat and callbacks"

Expand All @@ -123,7 +123,7 @@ for (alg, diffeq_alg) in zip(algs, diffeq_algs)
tstops = [24.0f0, 40.0f0], saveat = [0.0f0, 9.1f0], reltol = 1.0f-6,
abstol = 1.0f-6)

@test norm(bench_sol.u - sol[1].u) < 8e-4
@test norm(bench_sol.u - sol.u[1].u) < 8e-4

@info "Unadaptive and Adaptive comparison"

Expand All @@ -137,5 +137,5 @@ for (alg, diffeq_alg) in zip(algs, diffeq_algs)
adaptive = true, dt = 0.1f0, callback = cb, merge_callbacks = true,
saveat = [0.0f0, 9.1f0])

@test norm(asol[1].u - sol[1].u) < 7e-4
@test norm(asol.u[1].u - sol.u[1].u) < 7e-4
end
52 changes: 26 additions & 26 deletions test/gpu_kernel_de/gpu_ode_discrete_callbacks.jl
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ for alg in algs
adaptive = false, dt = 1.0f0, callback = cb, merge_callbacks = true,
tstops = [2.40f0])

@test norm(bench_sol(2.40f0) - sol[1](2.40f0)) < 2e-3
@test norm(bench_sol.u - sol[1].u) < 5e-3
@test norm(bench_sol(2.40f0) - sol.u[1](2.40f0)) < 2e-3
@test norm(bench_sol.u - sol.u[1].u) < 5e-3

#Test the truncation error due to floating point math, encountered when adjusting t for tstops
local sol = solve(monteprob, alg, EnsembleGPUKernel(backend),
Expand All @@ -47,8 +47,8 @@ for alg in algs
adaptive = false, dt = 0.01f0, callback = cb, merge_callbacks = true,
tstops = [4.0f0])

@test norm(bench_sol(4.0f0) - sol[1](4.0f0)) < 2e-6
@test norm(bench_sol.u - sol[1].u) < 3e-5
@test norm(bench_sol(4.0f0) - sol.u[1](4.0f0)) < 2e-6
@test norm(bench_sol.u - sol.u[1].u) < 3e-5

@info "Callback: CallbackSets"

Expand All @@ -70,9 +70,9 @@ for alg in algs
adaptive = false, dt = 1.0f0, callback = cb, merge_callbacks = true,
tstops = [2.40f0, 4.0f0])

@test norm(bench_sol(2.40f0) - sol[1](2.40f0)) < 2e-3
@test norm(bench_sol(4.0f0) - sol[1](4.0f0)) < 3e-3
@test norm(bench_sol.u - sol[1].u) < 7e-3
@test norm(bench_sol(2.40f0) - sol.u[1](2.40f0)) < 2e-3
@test norm(bench_sol(4.0f0) - sol.u[1](4.0f0)) < 3e-3
@test norm(bench_sol.u - sol.u[1].u) < 7e-3

@info "saveat and callbacks"

Expand All @@ -85,9 +85,9 @@ for alg in algs
adaptive = false, dt = 1.0f0, callback = cb, merge_callbacks = true,
tstops = [2.40f0, 4.0f0], saveat = [0.0f0, 6.0f0])

@test norm(bench_sol(2.40f0) - sol[1](2.40f0)) < 1e-3
@test norm(bench_sol(6.0f0) - sol[1](6.0f0)) < 3e-3
@test norm(bench_sol.u - sol[1].u) < 3e-3
@test norm(bench_sol(2.40f0) - sol.u[1](2.40f0)) < 1e-3
@test norm(bench_sol(6.0f0) - sol.u[1](6.0f0)) < 3e-3
@test norm(bench_sol.u - sol.u[1].u) < 3e-3

@info "save_everystep and callbacks"

Expand All @@ -100,9 +100,9 @@ for alg in algs
adaptive = false, dt = 1.0f0, callback = cb, merge_callbacks = true,
tstops = [2.40f0, 4.0f0], save_everystep = false)

@test norm(bench_sol(2.40f0) - sol[1](2.40f0)) < 3e-5
@test norm(bench_sol(4.0f0) - sol[1](4.0f0)) < 5e-5
@test norm(bench_sol.u - sol[1].u) < 2e-4
@test norm(bench_sol(2.40f0) - sol.u[1](2.40f0)) < 3e-5
@test norm(bench_sol(4.0f0) - sol.u[1](4.0f0)) < 5e-5
@test norm(bench_sol.u - sol.u[1].u) < 2e-4

@info "Adaptive version"

Expand All @@ -118,8 +118,8 @@ for alg in algs
merge_callbacks = true,
tstops = [4.0f0])

@test norm(bench_sol(4.0f0) - sol[1](4.0f0)) < 5e-5
@test norm(bench_sol.u - sol[1].u) < 2e-4
@test norm(bench_sol(4.0f0) - sol.u[1](4.0f0)) < 5e-5
@test norm(bench_sol.u - sol.u[1].u) < 2e-4

@info "Callback: CallbackSets"

Expand All @@ -133,9 +133,9 @@ for alg in algs
merge_callbacks = true,
tstops = [2.40f0, 4.0f0])

@test norm(bench_sol(2.40f0) - sol[1](2.40f0)) < 6e-4
@test norm(bench_sol(4.0f0) - sol[1](4.0f0)) < 1e-3
@test norm(bench_sol.u - sol[1].u) < 3e-3
@test norm(bench_sol(2.40f0) - sol.u[1](2.40f0)) < 6e-4
@test norm(bench_sol(4.0f0) - sol.u[1](4.0f0)) < 1e-3
@test norm(bench_sol.u - sol.u[1].u) < 3e-3

@info "saveat and callbacks"

Expand All @@ -151,9 +151,9 @@ for alg in algs
tstops = [2.40f0, 4.0f0], saveat = [0.0f0, 6.0f0], reltol = 1.0f-7,
abstol = 1.0f-7)

@test norm(bench_sol(2.40f0) - sol[1](2.40f0)) < 7e-3
@test norm(bench_sol(6.0f0) - sol[1](6.0f0)) < 2e-2
@test norm(bench_sol.u - sol[1].u) < 2e-2
@test norm(bench_sol(2.40f0) - sol.u[1](2.40f0)) < 7e-3
@test norm(bench_sol(6.0f0) - sol.u[1](6.0f0)) < 2e-2
@test norm(bench_sol.u - sol.u[1].u) < 2e-2

@info "Unadaptive and Adaptive comparison"

Expand All @@ -167,9 +167,9 @@ for alg in algs
adaptive = true, dt = 1.0f0, callback = cb, merge_callbacks = true,
tstops = [2.40f0, 4.0f0], saveat = [0.0f0, 4.0f0])

@test norm(asol[1](2.40f0) - sol[1](2.40f0)) < 3e-3
@test norm(asol[1](4.0f0) - sol[1](4.0f0)) < 5e-3
@test norm(asol[1].u - sol[1].u) < 5e-3
@test norm(asol.u[1](2.40f0) - sol.u[1](2.40f0)) < 3e-3
@test norm(asol.u[1](4.0f0) - sol.u[1](4.0f0)) < 5e-3
@test norm(asol.u[1].u - sol.u[1].u) < 5e-3

@info "Terminate callback"

Expand All @@ -184,6 +184,6 @@ for alg in algs
adaptive = false, dt = 1.0f0, callback = cb, merge_callbacks = true,
tstops = [2.40f0])

@test norm(bench_sol.t - sol[1].t) < 2e-3
@test norm(bench_sol.u - sol[1].u) < 5e-3
@test norm(bench_sol.t - sol.u[1].t) < 2e-3
@test norm(bench_sol.u - sol.u[1].u) < 5e-3
end
28 changes: 14 additions & 14 deletions test/gpu_kernel_de/gpu_ode_regression.jl
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ for alg in algs
bench_asol = solve(prob, Vern9(), dt = 0.1f-1, save_everystep = false, abstol = 1.0f-7,
reltol = 1.0f-7)

@test norm(bench_sol.u[end] - sol[1].u[end]) < 5e-3
@test norm(bench_asol.u - asol[1].u) < 8e-4
@test norm(bench_sol.u[end] - sol.u[1].u[end]) < 5e-3
@test norm(bench_asol.u - asol.u[1].u) < 8e-4

### solve parameters

Expand All @@ -54,13 +54,13 @@ for alg in algs
bench_asol = solve(prob, Vern9(), dt = 0.1f-1, save_everystep = false, abstol = 1.0f-7,
reltol = 1.0f-7, saveat = saveat)

@test norm(asol[1].u[end] - sol[1].u[end]) < 5e-3
@test norm(asol.u[1].u[end] - sol.u[1].u[end]) < 5e-3

@test norm(bench_sol.u - sol[1].u) < 2e-4
@test norm(bench_asol.u - asol[1].u) < 2e-4
@test norm(bench_sol.u - sol.u[1].u) < 2e-4
@test norm(bench_asol.u - asol.u[1].u) < 2e-4

@test length(sol[1].u) == length(saveat)
@test length(asol[1].u) == length(saveat)
@test length(sol.u[1].u) == length(saveat)
@test length(asol.u[1].u) == length(saveat)

saveat = collect(0.0f0:0.1f0:10.0f0)

Expand All @@ -75,22 +75,22 @@ for alg in algs
bench_asol = solve(prob, Vern9(), dt = 0.1f-1, save_everystep = false, abstol = 1.0f-7,
reltol = 1.0f-7, saveat = saveat)

@test norm(asol[1].u[end] - sol[1].u[end]) < 6e-3
@test norm(asol.u[1].u[end] - sol.u[1].u[end]) < 6e-3

@test norm(bench_sol.u - sol[1].u) < 2e-3
@test norm(bench_asol.u - asol[1].u) < 5e-3
@test norm(bench_sol.u - sol.u[1].u) < 2e-3
@test norm(bench_asol.u - asol.u[1].u) < 5e-3

@test length(sol[1].u) == length(saveat)
@test length(asol[1].u) == length(saveat)
@test length(sol.u[1].u) == length(saveat)
@test length(asol.u[1].u) == length(saveat)

local sol = solve(monteprob, alg, EnsembleGPUKernel(backend), trajectories = 2,
adaptive = false, dt = 0.01f0, save_everystep = false)

bench_sol = solve(prob, Vern9(), adaptive = false, dt = 0.01f0, save_everystep = false)

@test norm(bench_sol.u - sol[1].u) < 5e-3
@test norm(bench_sol.u - sol.u[1].u) < 5e-3

@test length(sol[1].u) == length(bench_sol.u)
@test length(sol.u[1].u) == length(bench_sol.u)

### Huge number of threads
local sol = solve(monteprob, alg, EnsembleGPUKernel(backend), trajectories = 10_000,
Expand Down
2 changes: 1 addition & 1 deletion test/gpu_kernel_de/gpu_sde_convergence.jl
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ prob = SDEProblem(f, g, u₀, tspan, p; seed = 1234)
dts = 1 .// 2 .^ (5:-1:2)

ensemble_prob = EnsembleProblem(prob;
output_func = (sol, i) -> (sol[end], false))
output_func = (sol, i) -> (sol.u[end], false))

@info "EM"
dts = 1 .// 2 .^ (12:-1:8)
Expand Down
6 changes: 3 additions & 3 deletions test/gpu_kernel_de/gpu_sde_regression.jl
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ for alg in algs

us = reshape(mean(sol_array, dims = 3), size(sol_array, 2))

us_exact = 0.5f0 * exp.(sol[1].t)
us_exact = 0.5f0 * exp.(sol.u[1].t)

@test norm(us - us_exact, Inf) < 6e-2

Expand Down Expand Up @@ -67,7 +67,7 @@ for alg in algs
adaptive = false, save_everystep = false)

@test sol.converged == true
@test length(sol[1].u) == 2
@test length(sol.u[1].u) == 2

saveat = [0.3f0, 0.5f0]

Expand Down Expand Up @@ -111,4 +111,4 @@ sol = solve(
adaptive = false, save_everystep = false)

@test sol.converged == true
@test length(sol[1].u) == 2
@test length(sol.u[1].u) == 2
16 changes: 8 additions & 8 deletions test/gpu_kernel_de/stiff_ode/gpu_ode_continuous_callbacks.jl
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ for alg in algs
bench_sol = solve(prob, Rosenbrock23(),
adaptive = false, dt = 0.1f0, callback = cb, merge_callbacks = true)

@test norm(bench_sol.u - sol[1].u) < 8e-4
@test norm(bench_sol.u - sol.u[1].u) < 8e-4

@info "Callback: CallbackSets"

Expand All @@ -67,7 +67,7 @@ for alg in algs
bench_sol = solve(prob, Rosenbrock23(),
adaptive = false, dt = 0.1f0, callback = cb, merge_callbacks = true)

@test norm(bench_sol.u - sol[1].u) < 8e-4
@test norm(bench_sol.u - sol.u[1].u) < 8e-4

@info "saveat and callbacks"

Expand All @@ -80,7 +80,7 @@ for alg in algs
adaptive = false, dt = 1.0f0, callback = cb, merge_callbacks = true,
saveat = [0.0f0, 9.1f0])

@test norm(bench_sol.u - sol[1].u) < 5e-4
@test norm(bench_sol.u - sol.u[1].u) < 5e-4

@info "save_everystep and callbacks"

Expand All @@ -93,7 +93,7 @@ for alg in algs
adaptive = false, dt = 0.1f0, callback = cb, merge_callbacks = true,
save_everystep = false)

@test norm(bench_sol.u - sol[1].u) < 6e-4
@test norm(bench_sol.u - sol.u[1].u) < 6e-4

@info "Adaptive version"

Expand All @@ -107,7 +107,7 @@ for alg in algs
adaptive = true, save_everystep = false, dt = 0.1f0, callback = cb,
merge_callbacks = true)

@test norm(bench_sol.u - sol[1].u) < 2e-3
@test norm(bench_sol.u - sol.u[1].u) < 2e-3

@info "Callback: CallbackSets"

Expand All @@ -121,7 +121,7 @@ for alg in algs
adaptive = true, dt = 0.1f0, save_everystep = false, callback = cb,
merge_callbacks = true)

@test norm(bench_sol.u - sol[1].u) < 2e-3
@test norm(bench_sol.u - sol.u[1].u) < 2e-3

@info "saveat and callbacks"

Expand All @@ -136,7 +136,7 @@ for alg in algs
tstops = [24.0f0, 40.0f0], saveat = [0.0f0, 9.1f0], reltol = 1.0f-6,
abstol = 1.0f-6)

@test norm(bench_sol.u - sol[1].u) < 6e-4
@test norm(bench_sol.u - sol.u[1].u) < 6e-4

@info "Unadaptive and Adaptive comparison"

Expand All @@ -150,5 +150,5 @@ for alg in algs
adaptive = true, dt = 0.1f0, callback = cb, merge_callbacks = true,
saveat = [0.0f0, 9.1f0])

@test norm(asol[1].u - sol[1].u) < 7e-4
@test norm(asol.u[1].u - sol.u[1].u) < 7e-4
end
Loading
Loading