Skip to content

Commit 0522051

Browse files
Fix some more tests
1 parent 02dc431 commit 0522051

File tree

1 file changed

+25
-27
lines changed

1 file changed

+25
-27
lines changed

src/benchmark.jl

Lines changed: 25 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -544,25 +544,25 @@ function WorkPrecisionSet(prob::AbstractRODEProblem, abstols, reltols, setups,
544544
weak_dense_errors = weak_dense_errors)
545545
for sim in sol_k] for sol_k in _solutions_k]
546546
if error_estimate WEAK_ERRORS
547-
errors = [[solutions[j][i].weak_errors[error_estimate] for i in 1:M] for j in 1:N]
547+
errors = [[solutions[j][i].weak_errors for i in 1:M] for j in 1:N]
548548
else
549-
errors = [[solutions[j][i].error_means[error_estimate] for i in 1:M] for j in 1:N]
549+
errors = [[solutions[j][i].error_means for i in 1:M] for j in 1:N]
550550
end
551551

552552
local _sol
553553

554554
# Now time it
555+
_abstols = [get(setups[k], :abstols, abstols) for k in 1:N]
556+
_reltols = [get(setups[k], :reltols, reltols) for k in 1:N]
557+
_dts = [get(setups[k], :dts, zeros(length(_abstols))) for k in 1:N]
555558
for k in 1:N
556559
# precompile
557560
GC.gc()
558-
_abstols = get(setups[k], :abstols, abstols)
559-
_reltols = get(setups[k], :reltols, reltols)
560-
_dts = get(setups[k], :dts, zeros(length(_abstols)))
561561
filtered_setup = filter(p -> p.first in DiffEqBase.allowedkeywords, setups[k])
562562

563563
_sol = solve(prob, setups[k][:alg];
564-
kwargs..., filtered_setup..., abstol = _abstols[1],
565-
reltol = _reltols[1], dt = _dts[1],
564+
kwargs..., filtered_setup..., abstol = _abstols[k][1],
565+
reltol = _reltols[k][1], dt = _dts[k][1],
566566
timeseries_errors = false,
567567
dense_errors = false)
568568
x = isempty(_sol.t) ? 0 : round(Int, mean(_sol.t) - sum(_sol.t) / length(_sol.t))
@@ -571,8 +571,8 @@ function WorkPrecisionSet(prob::AbstractRODEProblem, abstols, reltols, setups,
571571
for i in 1:numruns
572572
time_tmp[i] = @elapsed sol = solve(prob, setups[k][:alg];
573573
kwargs..., filtered_setup...,
574-
abstol = _abstols[j],
575-
reltol = _reltols[j], dt = _dts[j],
574+
abstol = _abstols[k][j],
575+
reltol = _reltols[k][j], dt = _dts[k][j],
576576
timeseries_errors = false,
577577
dense_errors = false)
578578
end
@@ -581,7 +581,8 @@ function WorkPrecisionSet(prob::AbstractRODEProblem, abstols, reltols, setups,
581581
end
582582
end
583583

584-
wps = [WorkPrecision(prob, abstols, reltols, errors[i], times[:, i], names[i], N)
584+
stats = nothing
585+
wps = [WorkPrecision(prob, _abstols[i], _reltols[i], errors[i], times[:, i], _dts[i], stats, names[i], N)
585586
for i in 1:N]
586587
WorkPrecisionSet(wps, N, abstols, reltols, prob, setups, names, error_estimate,
587588
numruns_error)
@@ -609,18 +610,18 @@ function WorkPrecisionSet(prob::AbstractEnsembleProblem, abstols, reltols, setup
609610
time_tmp = Vector{Float64}(undef, numruns)
610611

611612
# First calculate all of the errors
613+
_abstols = [get(setups[k], :abstols, abstols) for k in 1:N]
614+
_reltols = [get(setups[k], :reltols, reltols) for k in 1:N]
615+
_dts = [get(setups[k], :dts, zeros(length(_abstols))) for k in 1:N]
612616
for k in 1:N
613-
_abstols = get(setups[k], :abstols, abstols)
614-
_reltols = get(setups[k], :reltols, reltols)
615-
_dts = get(setups[k], :dts, zeros(length(_abstols)))
616617
filtered_setup = filter(p -> p.first in DiffEqBase.allowedkeywords, setups[k])
617618

618619
for j in 1:M
619620
sol = solve(prob, setups[k][:alg], ensemblealg;
620621
filtered_setup...,
621-
abstol = _abstols[j],
622-
reltol = _reltols[j],
623-
dt = _dts[j],
622+
abstol = _abstols[k][j],
623+
reltol = _reltols[k][j],
624+
dt = _dts[k][j],
624625
timeseries_errors = false,
625626
dense_errors = false,
626627
trajectories = Int(trajectories), kwargs...)
@@ -659,16 +660,13 @@ function WorkPrecisionSet(prob::AbstractEnsembleProblem, abstols, reltols, setup
659660
for k in 1:N
660661
# precompile
661662
GC.gc()
662-
_abstols = get(setups[k], :abstols, abstols)
663-
_reltols = get(setups[k], :reltols, reltols)
664-
_dts = get(setups[k], :dts, zeros(length(_abstols)))
665663
filtered_setup = filter(p -> p.first in DiffEqBase.allowedkeywords, setups[k])
666664

667665
_sol = solve(prob, setups[k][:alg], ensemblealg;
668666
filtered_setup...,
669-
abstol = _abstols[1],
670-
reltol = _reltols[1],
671-
dt = _dts[1],
667+
abstol = _abstols[k][1],
668+
reltol = _reltols[k][1],
669+
dt = _dts[k][1],
672670
timeseries_errors = false,
673671
dense_errors = false,
674672
trajectories = Int(trajectories), kwargs...)
@@ -678,9 +676,9 @@ function WorkPrecisionSet(prob::AbstractEnsembleProblem, abstols, reltols, setup
678676
for i in 1:numruns
679677
time_tmp[i] = @elapsed sol = solve(prob, setups[k][:alg], ensemblealg;
680678
filtered_setup...,
681-
abstol = _abstols[j],
682-
reltol = _reltols[j],
683-
dt = _dts[j],
679+
abstol = _abstols[k][j],
680+
reltol = _reltols[k][j],
681+
dt = _dts[k][j],
684682
timeseries_errors = false,
685683
dense_errors = false,
686684
trajectories = Int(trajectories),
@@ -690,8 +688,8 @@ function WorkPrecisionSet(prob::AbstractEnsembleProblem, abstols, reltols, setup
690688
GC.gc()
691689
end
692690
end
693-
694-
wps = [WorkPrecision(prob, abstols, reltols, errors[i], times[:, i], names[i], N)
691+
stats = nothing
692+
wps = [WorkPrecision(prob, _abstols[i], _reltols[i], errors[i], times[:, i], _dts[i], stats, names[i], N)
695693
for i in 1:N]
696694
WorkPrecisionSet(wps, N, abstols, reltols, prob, setups, names, error_estimate,
697695
Int(trajectories))

0 commit comments

Comments
 (0)