Skip to content

Improve CUTEst benchmarks #1283

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 199 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
199 commits
Select commit Hold shift + click to select a range
966bed3
Update test_sciml.yml
ChrisRackauckas Jun 3, 2025
39a57e6
CompatHelper: bump compat for CairoMakie to 0.14 for package Modeling…
Jun 12, 2025
3f032d6
CompatHelper: bump compat for CairoMakie to 0.14 for package NonStiff…
Jun 12, 2025
19580c7
CompatHelper: bump compat for CairoMakie to 0.14 for package Nonlinea…
Jun 12, 2025
7564ab7
Merge pull request #1273 from SciML/compathelper/new_version/2025-06-…
ChrisRackauckas Jun 12, 2025
c899ec7
Merge pull request #1272 from SciML/compathelper/new_version/2025-06-…
ChrisRackauckas Jun 12, 2025
9c54938
Merge pull request #1271 from SciML/compathelper/new_version/2025-06-…
ChrisRackauckas Jun 12, 2025
6aa6735
Update test_sciml.yml
ChrisRackauckas Jun 13, 2025
ade1fbf
Initial fix tests
GodotMisogi Jun 17, 2025
c1d7d98
Fix typo in BrussScaling.jmd
mrarat Jun 18, 2025
f956eb6
Merge pull request #1276 from mrarat/patch-1
ChrisRackauckas Jun 18, 2025
0e23ccb
CompatHelper: bump compat for CairoMakie to 0.15 for package Modeling…
Jun 22, 2025
51d9f21
CompatHelper: bump compat for CairoMakie to 0.15 for package NonStiff…
Jun 22, 2025
bcb574f
CompatHelper: bump compat for CairoMakie to 0.15 for package Nonlinea…
Jun 22, 2025
0f48f10
CompatHelper: bump compat for CairoMakie to 0.15 for package StiffBVP…
Jun 22, 2025
0225562
Merge pull request #1280 from SciML/compathelper/new_version/2025-06-…
ChrisRackauckas Jun 22, 2025
2ca5b24
Merge pull request #1279 from SciML/compathelper/new_version/2025-06-…
ChrisRackauckas Jun 22, 2025
0d824c4
Merge pull request #1278 from SciML/compathelper/new_version/2025-06-…
ChrisRackauckas Jun 22, 2025
7daed1a
Merge pull request #1277 from SciML/compathelper/new_version/2025-06-…
ChrisRackauckas Jun 22, 2025
e6dd2dc
Add three new stiff ODE benchmark problems
ChrisRackauckas Jun 27, 2025
8be9168
Add Medical Akzo Nobel and EMEP stiff ODE benchmarks
ChrisRackauckas Jun 27, 2025
6896952
FDM - SciMLOperators and plotting upgrades
GodotMisogi Jun 28, 2025
81308f6
Merge branch 'SciML:master' into dev-pde-benchmarks
GodotMisogi Jun 28, 2025
b2e9ea7
update to match detestset
ChrisRackauckas Jun 28, 2025
e61b2d1
e5 fixes
ChrisRackauckas Jun 28, 2025
77154e0
add translation notes
ChrisRackauckas Jun 28, 2025
4561346
update manifest
ChrisRackauckas Jun 28, 2025
fcb609d
direct translations
ChrisRackauckas Jun 28, 2025
82ad22e
add the out of place e5
ChrisRackauckas Jul 3, 2025
ca99e76
give up
ChrisRackauckas Jul 3, 2025
b6cfdbe
remove beam because it's wrong
ChrisRackauckas Jul 3, 2025
840c155
fix akzo
ChrisRackauckas Jul 3, 2025
3d42af4
fix up e5
ChrisRackauckas Jul 4, 2025
2e8a9bf
Burgers' FDM working
Jul 6, 2025
f63252c
KdV FDM working
Jul 6, 2025
e95f09e
remove other 2 as wrong
ChrisRackauckas Jul 6, 2025
8546819
Merge pull request #1282 from SciML/stiff_ode
ChrisRackauckas Jul 6, 2025
d2d33a9
Add Mosquito state-dependent delay equation benchmark
ChrisRackauckas Jul 7, 2025
7894304
Merge pull request #1285 from SciML/delayMosquito
ChrisRackauckas Jul 7, 2025
03c5b9b
KS FDM working
Jul 7, 2025
0b2c537
Add Microkinetic model benchmark
ChrisRackauckas Jul 7, 2025
0e97cff
Merge pull request #1287 from SciML/stiff_mkm
ChrisRackauckas Jul 7, 2025
9df0c5e
Extend interval rootfinding benchmark suite
ChrisRackauckas Jul 7, 2025
f244a59
Allen-Cahn FDM kinda working
Jul 7, 2025
c71799a
Updated dependencies
Jul 7, 2025
3011af1
fix up compile times
ChrisRackauckas Jul 7, 2025
265114e
change name
ChrisRackauckas Jul 7, 2025
9a82294
Merge pull request #1290 from SciML/intervalroots
ChrisRackauckas Jul 7, 2025
cf7cbc9
Update README.md
ChrisRackauckas Jul 7, 2025
d2594ac
Merge branch 'SciML:master' into dev-pde-benchmarks
GodotMisogi Jul 7, 2025
74a70d1
CompatHelper: bump compat for SimpleNonlinearSolve to 2 for package I…
Jul 8, 2025
a4a7b52
CompatHelper: add new compat entry for Statistics at version 1 for pa…
Jul 8, 2025
1e41207
CompatHelper: add new compat entry for StaticArrays at version 1 for …
Jul 8, 2025
54acd34
CompatHelper: add new compat entry for LabelledArrays at version 1 fo…
Jul 8, 2025
3780711
Merge pull request #1295 from SciML/compathelper/new_version/2025-07-…
ChrisRackauckas Jul 8, 2025
ab72e37
Merge branch 'master' into compathelper/new_version/2025-07-08-00-43-…
ChrisRackauckas Jul 8, 2025
8df272e
Merge pull request #1294 from SciML/compathelper/new_version/2025-07-…
ChrisRackauckas Jul 8, 2025
72f47f6
Merge pull request #1293 from SciML/compathelper/new_version/2025-07-…
ChrisRackauckas Jul 8, 2025
aa0be3e
Merge branch 'master' into compathelper/new_version/2025-07-08-00-39-…
ChrisRackauckas Jul 8, 2025
8a8d431
Merge pull request #1292 from SciML/compathelper/new_version/2025-07-…
ChrisRackauckas Jul 8, 2025
c7a6f3a
Burgers' spectral ApproxFun working
Jul 8, 2025
83097f7
Burgers' spectral OCP working
Jul 8, 2025
f50be0d
Add linear DAE benchmarks
ChrisRackauckas Jul 7, 2025
c3a8623
add StaticArrays
ChrisRackauckas Jul 7, 2025
0a3d9a5
Fix up the linear DAE benchmarks
ChrisRackauckas Jul 7, 2025
097276b
try DAEproblem
ChrisRackauckas Jul 8, 2025
60c26b9
get something running
ChrisRackauckas Jul 8, 2025
4c85f65
manifest bump
ChrisRackauckas Jul 9, 2025
404be0e
v1.10
ChrisRackauckas Jul 9, 2025
89274ec
Merge pull request #1288 from SciML/lineardae
ChrisRackauckas Jul 9, 2025
95450bb
CompatHelper: add new compat entry for StaticArrays at version 1 for …
Jul 10, 2025
09e450a
CompatHelper: add new compat entry for Statistics at version 1 for pa…
Jul 10, 2025
1881cf5
Merge pull request #1299 from SciML/compathelper/new_version/2025-07-…
ChrisRackauckas Jul 10, 2025
7422608
Merge branch 'master' into compathelper/new_version/2025-07-10-00-38-…
ChrisRackauckas Jul 10, 2025
2d9d410
Merge pull request #1298 from SciML/compathelper/new_version/2025-07-…
ChrisRackauckas Jul 10, 2025
1a90bf4
KdV pseudospectral ApproxFun kinda working
Jul 12, 2025
2388581
KS pseudospectral ApproxFun working
Jul 12, 2025
33a4492
Added DomainSets for scaling domains
Jul 12, 2025
acc8166
Allen-Cahn pseudospectral COP working
Jul 12, 2025
2c6f212
Add attribution
ChrisRackauckas Jul 12, 2025
2b2cfe4
bump manifest
ChrisRackauckas Jul 12, 2025
0695bd7
v1.10
ChrisRackauckas Jul 12, 2025
cc934e7
Merge pull request #1300 from SciML/dde
ChrisRackauckas Jul 12, 2025
3588e88
CompatHelper: bump compat for SparseConnectivityTracer to 1 for packa…
Jul 15, 2025
d1e9c2f
Merge pull request #1301 from SciML/compathelper/new_version/2025-07-…
ChrisRackauckas Jul 15, 2025
b41d734
CompatHelper: bump compat for SparseConnectivityTracer to 1 for packa…
Jul 15, 2025
d3a01e4
Merge pull request #1302 from SciML/compathelper/new_version/2025-07-…
ChrisRackauckas Jul 15, 2025
4f32412
Fixed difference operator accuracy issues with SummationByPartsOperat…
Jul 18, 2025
ef95ded
Used SummationByPartsOperators.jl and added more benchmarks
Jul 18, 2025
0d7eea1
Added benchmarks to ClassicalOrthogonalPolynomials.jl cases
Jul 18, 2025
e2b3051
Updated dependencies
Jul 18, 2025
aad85c6
Added problem description for Allen-Cahn FDM
Jul 18, 2025
2b85e14
Added problem description for Allen-Cahn pseudospectral
Jul 18, 2025
30e3f44
Added problem description for Burgers' FDM + swithced to SummationByP…
Jul 18, 2025
1998bb4
Added problem description for Burgers' pseudospectral
Jul 18, 2025
6337711
Added problem description for KdV FDM + changed derivative order accu…
Jul 18, 2025
bad9540
Added problem description for KdV and KS pseudospectral + used Fourie…
Jul 18, 2025
127683d
Added problem description for KS FDM + changed derivative order accuracy
Jul 18, 2025
e17ad67
Reduced derivative order accuracy in Allen-Cahn FDM + minor edits in …
Jul 19, 2025
9884921
Fixed typos
Jul 19, 2025
164ce6c
Added high-order benchmarks to Allen-Cahn and Burgers' tests
Jul 21, 2025
2108701
added nand gate problem benchmark
jayantpranjal0 Jul 21, 2025
8e03008
Tested higher-order methods; need to further diagnose KenCarp and ARKODE
Jul 22, 2025
90bfa8e
Fixed typo + tested KenCarp and ARKODE solvers in KS pseudo-spectral
Jul 23, 2025
0ffc04d
Some KenCarp tests working
Jul 23, 2025
667a11b
Updated coefficient for more interesting result
Jul 23, 2025
8392599
KenCarp low tol kinda working on KdV pseudo-spectral
Jul 23, 2025
90a3e83
Reorganized high tolerance and low tolerance order in KdV pseudospectral
Jul 23, 2025
05c1eaf
Update simpleintervalrootfind.jmd
jverzani Jul 25, 2025
2056a26
Removed DifferentialEquations.jl dependency
GodotMisogi Jul 26, 2025
2e61b98
Merge pull request #1304 from jverzani/patch-1
ChrisRackauckas Jul 26, 2025
5e1f0f6
Removed KenCarp for now in KdV FDM
Jul 28, 2025
27f2c28
Resolved Manifest.toml
Jul 28, 2025
ea6e32c
Apply JuliaFormatter to fix code formatting
Jul 31, 2025
82b34f3
Merge pull request #1307 from ChrisRackauckas/fix-formatting
ChrisRackauckas Jul 31, 2025
be23be3
Fixed typo in KS pseudo-spectral
Aug 1, 2025
2267de9
Merge branch 'dev-pde-benchmarks' of https://github.com/GodotMisogi/S…
Aug 1, 2025
9d6a8e7
Updated Manifest.toml with merge
Aug 1, 2025
7e5cf3c
Reorganized high tolerance and low tolerance codeblocks in KS and KdV…
Aug 1, 2025
b1241a6
Fixed KenCarp methods in KdV and KS FDM benchmarks
Aug 1, 2025
df027cf
Complete NAND Gate DAE benchmark following TransistorAmplifier pattern
claude Aug 1, 2025
291aa21
Update benchmarks/DAE/NANDGateProblem.jmd
ChrisRackauckas Aug 1, 2025
dc033bb
Fix mass matrix singularity issue in NAND Gate DAE benchmark
claude Aug 1, 2025
aa556d7
Restore singular mass matrix approach (singular is fine)
claude Aug 1, 2025
091984a
Fix ModelingToolkit variable mapping after structural_simplify
claude Aug 1, 2025
b25870c
Revert variable mapping change - original was correct
claude Aug 1, 2025
0a5ccb8
Merge pull request #1291 from GodotMisogi/dev-pde-benchmarks
ChrisRackauckas Aug 1, 2025
aa145dc
Fix benchmark setup issues
claude Aug 1, 2025
0d698e8
Remove ModelingToolkit components from NAND Gate benchmark
claude Aug 2, 2025
64c85b6
CompatHelper: consolidate version bumps for multiple packages
claude Aug 2, 2025
45790bf
Update benchmarks/HybridJumps/Project.toml
ChrisRackauckas Aug 2, 2025
4fb9bc6
Merge pull request #1316 from SciML/compat-helper-consolidation
ChrisRackauckas Aug 2, 2025
42f40f8
Fix DAE initial derivative computation using mass matrix approach
claude Aug 2, 2025
dffd72f
Merge pull request #1317 from GodotMisogi/dev-pde-benchmarks
ChrisRackauckas Aug 2, 2025
d72ad62
Fix DAE formulation sign convention for stability
claude Aug 2, 2025
8f71b19
Simplify DAE initialization for robust solving
claude Aug 2, 2025
e369213
Fix DAE solver stability issues in benchmark
claude Aug 2, 2025
77d4278
Use DASKR for high-accuracy DAE reference solution
claude Aug 2, 2025
75dbd66
Update NANDGateProblem.jmd
ChrisRackauckas Aug 2, 2025
15cdd7d
Merge pull request #1308 from SciML/nand_gate_problem
ChrisRackauckas Aug 2, 2025
1a7cf04
ci: re-sign treehashes
thazhemadam Aug 3, 2025
1de4a6f
Merge pull request #1318 from SciML/at/treehashes
ChrisRackauckas Aug 3, 2025
e335977
CompatHelper: bump compat for SDEProblemLibrary to 1 for package Adap…
Aug 5, 2025
6e0eb47
CompatHelper: bump compat for SDEProblemLibrary to 1 for package NonS…
Aug 5, 2025
006fa2f
Merge pull request #1320 from SciML/compathelper/new_version/2025-08-…
ChrisRackauckas Aug 5, 2025
590f0a2
Merge pull request #1319 from SciML/compathelper/new_version/2025-08-…
ChrisRackauckas Aug 5, 2025
9b89092
CompatHelper: bump compat for SDEProblemLibrary to 1 for package Stif…
Aug 5, 2025
3d44359
Merge pull request #1321 from SciML/compathelper/new_version/2025-08-…
ChrisRackauckas Aug 5, 2025
785a9d7
Setting up CUTEst benchmarks dir structure
alonsoC1s Apr 19, 2024
313ac1c
Unconstrained problem benchmarks
alonsoC1s Apr 21, 2024
2c7dc3a
Fixing problem initialization
alonsoC1s Apr 22, 2024
c4a198a
Starting the analysis
alonsoC1s Aug 23, 2024
810e402
Added preliminary benchmarks for eq/ineq problems with free vars
alonsoC1s Aug 23, 2024
c2babbd
ci: install `gfortran` when the CUTEst optimization benchmarks are run
thazhemadam Aug 27, 2024
64b0e85
fixed variable use in benchmarks
alonsoC1s Aug 27, 2024
bd4c96c
Removing Manifest to fix version errors
alonsoC1s Aug 28, 2024
b0f1c35
Using NLPModels from General Registry
alonsoC1s Sep 3, 2024
b3f7ae1
revert: "ci: install `gfortran` when the CUTEst optimization benchmar…
thazhemadam Sep 26, 2024
82df232
ci: use rootfs image with openmodelica and gfortran pre-installed
thazhemadam Sep 26, 2024
3b2acff
Add SciMLBenchmarks to the manifest and the footer
ChrisRackauckas Sep 26, 2024
d344044
split into benchmark groups
ChrisRackauckas Oct 6, 2024
ca5ef66
Update CUTEst_bounded.jmd
ChrisRackauckas Oct 7, 2024
b91dc7b
Use OptimizationNLPModels from branch
Vaibhavdixit02 Mar 11, 2025
2d27f55
stats pkg
Vaibhavdixit02 Mar 11, 2025
0333356
use julia 1.10 resolved manifest
Vaibhavdixit02 Mar 14, 2025
b417914
omjulia
arnavk23 Jun 29, 2025
292f48f
Update Manifest.toml
arnavk23 Jun 30, 2025
7631605
manifest
arnavk23 Jul 3, 2025
1e9a8a6
formatted using JuliaFormatter
arnavk23 Jul 5, 2025
0554ab0
removing deprecated CUTEst.select
arnavk23 Jul 7, 2025
465f149
Update Project.toml
arnavk23 Jul 7, 2025
a2cd0e4
safe_solvers
arnavk23 Jul 12, 2025
c06bb8e
Update update.jl
arnavk23 Jul 14, 2025
b8bc556
Update make.jl
arnavk23 Jul 14, 2025
39f6a7d
Update pages.jl
arnavk23 Jul 14, 2025
1aeac3d
Update SciMLBenchmarks.jl
arnavk23 Jul 14, 2025
aa51c1b
Improve CUTEst benchmarks with chunked processing and robust error ha…
arnavk23 Jul 14, 2025
026272c
Make CUTEst benchmarks extremely conservative to prevent OOM
arnavk23 Jul 14, 2025
ffb87df
Fix CUTEst benchmark filtering and timeout issues
arnavk23 Jul 14, 2025
40bbd90
changes
arnavk23 Jul 19, 2025
0c9522d
try
arnavk23 Jul 27, 2025
ead71b0
trying again to commit changes to the CUTEst benchmarks in SciMLBench…
arnavk23 Jul 27, 2025
ba7d2bd
new changes to CUTEst benchmarks
arnavk23 Aug 1, 2025
93c308b
building
arnavk23 Aug 2, 2025
61fa6f6
bounded build pass
arnavk23 Aug 2, 2025
73ec8a7
Delete benchmarks/OptimizationCUTEst/benchmarks/OptimizationCUTEst/Pr…
arnavk23 Aug 6, 2025
c3f4c64
Delete benchmarks/OptimizationCUTEst/benchmarks/OptimizationCUTEst/Ma…
arnavk23 Aug 6, 2025
c7b0c87
Update benchmarks/OptimizationCUTEst/CUTEst_bounded.jmd
ChrisRackauckas Aug 6, 2025
a8b9699
Update benchmarks/OptimizationCUTEst/CUTEst_quadratic.jmd
ChrisRackauckas Aug 6, 2025
a71fbfb
Update benchmarks/OptimizationCUTEst/CUTEst_unbounded.jmd
ChrisRackauckas Aug 6, 2025
cf17b46
Update benchmarks/OptimizationCUTEst/CUTEst_unconstrained.jmd
ChrisRackauckas Aug 6, 2025
ac1740a
Update benchmarks/OptimizationCUTEst/CUTEst_safe_solvers.jmd
ChrisRackauckas Aug 6, 2025
6c9d3ea
Update benchmarks/OptimizationCUTEst/Project.toml
ChrisRackauckas Aug 6, 2025
bec7048
Update benchmarks/OptimizationCUTEst/Project.toml
ChrisRackauckas Aug 6, 2025
17d1b73
Update Project.toml
ChrisRackauckas Aug 6, 2025
a1cc6ce
Update Project.toml
ChrisRackauckas Aug 6, 2025
245e7bb
Update Project.toml
ChrisRackauckas Aug 6, 2025
59a11e5
Update Project.toml
ChrisRackauckas Aug 6, 2025
4cfbd62
Regenerate manifest
ChrisRackauckas Aug 6, 2025
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
3 changes: 3 additions & 0 deletions .JuliaFormatter.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
style = "sciml"
format_markdown = true
format_docstrings = true
Binary file modified .buildkite/launch_benchmarks.yml.signature
Binary file not shown.
4 changes: 2 additions & 2 deletions .buildkite/run_benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ steps:
- JuliaCI/julia#v1:
version: "1.10"
- staticfloat/sandbox:
rootfs_url: "https://github.com/thazhemadam/openmodelica-rootfs-image/releases/download/v1.23.0/rootfs-openmodelica-v1.23.0.amd64.tar.gz"
rootfs_treehash: "82970243dc4f188e599a976abc20951f4aba2912"
rootfs_url: "https://github.com/thazhemadam/ScimlBenchmarks-rootfs-image/releases/download/rootfs-image/rootfs-script.amd64.tar.gz"
rootfs_treehash: "943bde824554f0afad5a939341f05e3bdb393051"
uid: 1000
gid: 1000
workspaces:
Expand Down
4 changes: 2 additions & 2 deletions .buildkite/test_sciml.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
steps:
- label: ":julia: Run tests on 1.8"
- label: ":julia: Run tests on LTS"
plugins:
- JuliaCI/julia#v1:
version: 1.9
version: '1.10'
- JuliaCI/julia-test#v1:
timeout_in_minutes: 20
artifact_paths:
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/update.jl
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ date = Dates.format(now(), "yyyy-mm-dd")
benchpath = joinpath(@__DIR__, "..", "..", "benchmarks")

# Get all the open PRs and their number
gh_prs = GitHub.pull_requests("SciML/SciMLBenchmarks.jl"; auth=myauth)
gh_prs = GitHub.pull_requests("SciML/SciMLBenchmarks.jl"; auth = myauth)
prs = Dict{String, Int64}()
for i in 1:length(gh_prs[1])
prs[gh_prs[1][i].head.ref] = gh_prs[1][i].number
end

# Get all the branches from the repo
gh_branches = GitHub.branches("SciML/SciMLBenchmarks.jl"; auth=myauth)
gh_branches = GitHub.branches("SciML/SciMLBenchmarks.jl"; auth = myauth)
branches = [gh_branches[1][i].name for i in 1:length(gh_branches[1])]

@info("PRs and branches", prs, branches)
Expand Down Expand Up @@ -50,11 +50,11 @@ for dir in readdir(benchpath)
if dir ∉ keys(prs)
params = Dict(
"title" => "Updated $(dir) for benchmarks",
"head" => "$(dir)",
"base" => "master"
"head" => "$(dir)",
"base" => "master"
)
@info("Creating a pull request from head: ", dir)
GitHub.create_pull_request("SciML/SciMLBenchmarks.jl"; params=params, auth=myauth)
@info("Creating a pull request from head: ", dir)
GitHub.create_pull_request("SciML/SciMLBenchmarks.jl"; params = params, auth = myauth)
else
@info("Updating the pull request numbered: ", prs[dir])
GitHub.update_pull_request("SciML/SciMLBenchmarks.jl", prs[dir]; auth=myauth)
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ or building work-precision diagrams for direct comparison of speed at given erro

**If any of the code from any of the languages can be improved, please open a pull request**.

For critiques of benchmarks, please open a pull request that changes the code in the desired manner. Issues with recommended
changes are generally vague and not actionable, while pull requests with code changes are exact. Thus if there is something
you think should be changed in the code, please make the recommended change in the code!

## Results

Expand Down
233 changes: 129 additions & 104 deletions benchmarks/AdaptiveSDE/AdaptiveEfficiencyTests.jmd
Original file line number Diff line number Diff line change
Expand Up @@ -8,138 +8,163 @@ author: Chris Rackauckas
using Distributed
addprocs(2)

p1 = Vector{Any}(undef,3)
p2 = Vector{Any}(undef,3)
p3 = Vector{Any}(undef,3)
p1 = Vector{Any}(undef, 3)
p2 = Vector{Any}(undef, 3)
p3 = Vector{Any}(undef, 3)

@everywhere begin
using StochasticDiffEq, SDEProblemLibrary, DiffEqNoiseProcess, Plots, ParallelDataTransfer
import SDEProblemLibrary: prob_sde_additive,
prob_sde_linear, prob_sde_wave
using StochasticDiffEq, SDEProblemLibrary, DiffEqNoiseProcess, Plots,
ParallelDataTransfer
import SDEProblemLibrary: prob_sde_additive,
prob_sde_linear, prob_sde_wave
end

using StochasticDiffEq, SDEProblemLibrary, DiffEqNoiseProcess, Plots, ParallelDataTransfer
import SDEProblemLibrary: prob_sde_additive,
prob_sde_linear, prob_sde_wave
prob_sde_linear, prob_sde_wave

probs = Matrix{SDEProblem}(undef,3,3)
probs = Matrix{SDEProblem}(undef, 3, 3)
## Problem 1
prob = prob_sde_linear
probs[1,1] = SDEProblem(prob.f,prob.g,prob.u0,prob.tspan,prob.p,noise=WienerProcess(0.0,0.0,0.0,rswm=RSWM(adaptivealg=:RSwM1)))
probs[1,2] = SDEProblem(prob.f,prob.g,prob.u0,prob.tspan,prob.p,noise=WienerProcess(0.0,0.0,0.0,rswm=RSWM(adaptivealg=:RSwM2)))
probs[1,3] = SDEProblem(prob.f,prob.g,prob.u0,prob.tspan,prob.p,noise=WienerProcess(0.0,0.0,0.0,rswm=RSWM(adaptivealg=:RSwM3)))
probs[1, 1] = SDEProblem(prob.f, prob.g, prob.u0, prob.tspan, prob.p,
noise = WienerProcess(0.0, 0.0, 0.0, rswm = RSWM(adaptivealg = :RSwM1)))
probs[1, 2] = SDEProblem(prob.f, prob.g, prob.u0, prob.tspan, prob.p,
noise = WienerProcess(0.0, 0.0, 0.0, rswm = RSWM(adaptivealg = :RSwM2)))
probs[1, 3] = SDEProblem(prob.f, prob.g, prob.u0, prob.tspan, prob.p,
noise = WienerProcess(0.0, 0.0, 0.0, rswm = RSWM(adaptivealg = :RSwM3)))
## Problem 2
prob = prob_sde_wave
probs[2,1] = SDEProblem(prob.f,prob.g,prob.u0,prob.tspan,prob.p,noise=WienerProcess(0.0,0.0,0.0,rswm=RSWM(adaptivealg=:RSwM1)))
probs[2,2] = SDEProblem(prob.f,prob.g,prob.u0,prob.tspan,prob.p,noise=WienerProcess(0.0,0.0,0.0,rswm=RSWM(adaptivealg=:RSwM2)))
probs[2,3] = SDEProblem(prob.f,prob.g,prob.u0,prob.tspan,prob.p,noise=WienerProcess(0.0,0.0,0.0,rswm=RSWM(adaptivealg=:RSwM3)))
probs[2, 1] = SDEProblem(prob.f, prob.g, prob.u0, prob.tspan, prob.p,
noise = WienerProcess(0.0, 0.0, 0.0, rswm = RSWM(adaptivealg = :RSwM1)))
probs[2, 2] = SDEProblem(prob.f, prob.g, prob.u0, prob.tspan, prob.p,
noise = WienerProcess(0.0, 0.0, 0.0, rswm = RSWM(adaptivealg = :RSwM2)))
probs[2, 3] = SDEProblem(prob.f, prob.g, prob.u0, prob.tspan, prob.p,
noise = WienerProcess(0.0, 0.0, 0.0, rswm = RSWM(adaptivealg = :RSwM3)))
## Problem 3
prob = prob_sde_additive
probs[3,1] = SDEProblem(prob.f,prob.g,prob.u0,prob.tspan,prob.p,noise=WienerProcess(0.0,0.0,0.0,rswm=RSWM(adaptivealg=:RSwM1)))
probs[3,2] = SDEProblem(prob.f,prob.g,prob.u0,prob.tspan,prob.p,noise=WienerProcess(0.0,0.0,0.0,rswm=RSWM(adaptivealg=:RSwM2)))
probs[3,3] = SDEProblem(prob.f,prob.g,prob.u0,prob.tspan,prob.p,noise=WienerProcess(0.0,0.0,0.0,rswm=RSWM(adaptivealg=:RSwM3)))

fullMeans = Vector{Array}(undef,3)
fullMedians = Vector{Array}(undef,3)
fullElapsed = Vector{Array}(undef,3)
fullTols = Vector{Array}(undef,3)
probs[3, 1] = SDEProblem(prob.f, prob.g, prob.u0, prob.tspan, prob.p,
noise = WienerProcess(0.0, 0.0, 0.0, rswm = RSWM(adaptivealg = :RSwM1)))
probs[3, 2] = SDEProblem(prob.f, prob.g, prob.u0, prob.tspan, prob.p,
noise = WienerProcess(0.0, 0.0, 0.0, rswm = RSWM(adaptivealg = :RSwM2)))
probs[3, 3] = SDEProblem(prob.f, prob.g, prob.u0, prob.tspan, prob.p,
noise = WienerProcess(0.0, 0.0, 0.0, rswm = RSWM(adaptivealg = :RSwM3)))

fullMeans = Vector{Array}(undef, 3)
fullMedians = Vector{Array}(undef, 3)
fullElapsed = Vector{Array}(undef, 3)
fullTols = Vector{Array}(undef, 3)
offset = 0

Ns = [17,23,
17]
Ns = [17, 23,
17]
```

Timings are only valid if no workers die. Workers die if you run out of memory.

```julia
for k in 1:size(probs,1)
global probs, Ns, fullMeans, fullMedians, fullElapsed, fullTols
println("Problem $k")
## Setup
N = Ns[k]

msims = Vector{Any}(undef,N)
elapsed = Array{Float64}(undef,N,3)
medians = Array{Float64}(undef,N,3)
means = Array{Float64}(undef,N,3)
tols = Array{Float64}(undef,N,3)

#Compile
prob = probs[k,1]
ParallelDataTransfer.sendto(workers(), prob=prob)
monte_prob = EnsembleProblem(prob)
solve(monte_prob,SRIW1(),dt=1/2^(4),adaptive=true,trajectories=1000,abstol=2.0^(-1),reltol=0)

println("RSwM1")
for i=1+offset:N+offset
tols[i-offset,1] = 2.0^(-i-1)
msims[i-offset] = DiffEqBase.calculate_monte_errors(solve(monte_prob,SRIW1(),
trajectories=1000,abstol=2.0^(-i-1),
reltol=0,force_dtmin=true))
elapsed[i-offset,1] = msims[i-offset].elapsedTime
medians[i-offset,1] = msims[i-offset].error_medians[:final]
means[i-offset,1] = msims[i-offset].error_means[:final]
end

println("RSwM2")
prob = probs[k,2]

ParallelDataTransfer.sendto(workers(), prob=prob)
monte_prob = EnsembleProblem(prob)
solve(monte_prob,SRIW1(),dt=1/2^(4),adaptive=true,trajectories=1000,abstol=2.0^(-1),reltol=0)

for i=1+offset:N+offset
tols[i-offset,2] = 2.0^(-i-1)
msims[i-offset] = DiffEqBase.calculate_monte_errors(solve(monte_prob,SRIW1(),
trajectories=1000,abstol=2.0^(-i-1),
reltol=0,force_dtmin=true))
elapsed[i-offset,2] = msims[i-offset].elapsedTime
medians[i-offset,2] = msims[i-offset].error_medians[:final]
means[i-offset,2] = msims[i-offset].error_means[:final]
end

println("RSwM3")
prob = probs[k,3]
ParallelDataTransfer.sendto(workers(), prob=prob)
monte_prob = EnsembleProblem(prob)
solve(monte_prob,SRIW1(),dt=1/2^(4),adaptive=true,trajectories=1000,abstol=2.0^(-1),reltol=0)

for i=1+offset:N+offset
tols[i-offset,3] = 2.0^(-i-1)
msims[i-offset] = DiffEqBase.calculate_monte_errors(solve(monte_prob,SRIW1(),
adaptive=true,trajectories=1000,abstol=2.0^(-i-1),
reltol=0,force_dtmin=true))
elapsed[i-offset,3] = msims[i-offset].elapsedTime
medians[i-offset,3] = msims[i-offset].error_medians[:final]
means[i-offset,3] = msims[i-offset].error_means[:final]
end

fullMeans[k] = means
fullMedians[k] =medians
fullElapsed[k] = elapsed
fullTols[k] = tols
for k in 1:size(probs, 1)
global probs, Ns, fullMeans, fullMedians, fullElapsed, fullTols
println("Problem $k")
## Setup
N = Ns[k]

msims = Vector{Any}(undef, N)
elapsed = Array{Float64}(undef, N, 3)
medians = Array{Float64}(undef, N, 3)
means = Array{Float64}(undef, N, 3)
tols = Array{Float64}(undef, N, 3)

#Compile
prob = probs[k, 1]
ParallelDataTransfer.sendto(workers(), prob = prob)
monte_prob = EnsembleProblem(prob)
solve(monte_prob, SRIW1(), dt = 1/2^(4), adaptive = true,
trajectories = 1000, abstol = 2.0^(-1), reltol = 0)

println("RSwM1")
for i in (1 + offset):(N + offset)
tols[i - offset, 1] = 2.0^(-i-1)
msims[i - offset] = DiffEqBase.calculate_monte_errors(solve(monte_prob, SRIW1(),
trajectories = 1000, abstol = 2.0^(-i-1),
reltol = 0, force_dtmin = true))
elapsed[i - offset, 1] = msims[i - offset].elapsedTime
medians[i - offset, 1] = msims[i - offset].error_medians[:final]
means[i - offset, 1] = msims[i - offset].error_means[:final]
end

println("RSwM2")
prob = probs[k, 2]

ParallelDataTransfer.sendto(workers(), prob = prob)
monte_prob = EnsembleProblem(prob)
solve(monte_prob, SRIW1(), dt = 1/2^(4), adaptive = true,
trajectories = 1000, abstol = 2.0^(-1), reltol = 0)

for i in (1 + offset):(N + offset)
tols[i - offset, 2] = 2.0^(-i-1)
msims[i - offset] = DiffEqBase.calculate_monte_errors(solve(monte_prob, SRIW1(),
trajectories = 1000, abstol = 2.0^(-i-1),
reltol = 0, force_dtmin = true))
elapsed[i - offset, 2] = msims[i - offset].elapsedTime
medians[i - offset, 2] = msims[i - offset].error_medians[:final]
means[i - offset, 2] = msims[i - offset].error_means[:final]
end

println("RSwM3")
prob = probs[k, 3]
ParallelDataTransfer.sendto(workers(), prob = prob)
monte_prob = EnsembleProblem(prob)
solve(monte_prob, SRIW1(), dt = 1/2^(4), adaptive = true,
trajectories = 1000, abstol = 2.0^(-1), reltol = 0)

for i in (1 + offset):(N + offset)
tols[i - offset, 3] = 2.0^(-i-1)
msims[i - offset] = DiffEqBase.calculate_monte_errors(solve(monte_prob, SRIW1(),
adaptive = true, trajectories = 1000, abstol = 2.0^(-i-1),
reltol = 0, force_dtmin = true))
elapsed[i - offset, 3] = msims[i - offset].elapsedTime
medians[i - offset, 3] = msims[i - offset].error_medians[:final]
means[i - offset, 3] = msims[i - offset].error_means[:final]
end

fullMeans[k] = means
fullMedians[k] = medians
fullElapsed[k] = elapsed
fullTols[k] = tols
end
```

```julia
gr(fmt=:svg)
gr(fmt = :svg)
lw=3
leg=String["RSwM1","RSwM2","RSwM3"]
leg=String["RSwM1", "RSwM2", "RSwM3"]

titleFontSize = 16
guideFontSize = 14
legendFontSize= 14
tickFontSize = 12

for k in 1:size(probs,1)
global probs, Ns, fullMeans, fullMedians, fullElapsed, fullTols
p1[k] = Plots.plot(fullTols[k],fullMeans[k],xscale=:log10,yscale=:log10, xguide="Absolute Tolerance",yguide="Mean Final Error",title="Example $k" ,linewidth=lw,grid=false,lab=leg,titlefont=font(titleFontSize),legendfont=font(legendFontSize),tickfont=font(tickFontSize),guidefont=font(guideFontSize))
p2[k] = Plots.plot(fullTols[k],fullMedians[k],xscale=:log10,yscale=:log10,xguide="Absolute Tolerance",yguide="Median Final Error",title="Example $k",linewidth=lw,grid=false,lab=leg,titlefont=font(titleFontSize),legendfont=font(legendFontSize),tickfont=font(tickFontSize),guidefont=font(guideFontSize))
p3[k] = Plots.plot(fullTols[k],fullElapsed[k],xscale=:log10,yscale=:log10,xguide="Absolute Tolerance",yguide="Elapsed Time",title="Example $k" ,linewidth=lw,grid=false,lab=leg,titlefont=font(titleFontSize),legendfont=font(legendFontSize),tickfont=font(tickFontSize),guidefont=font(guideFontSize))
legendFontSize = 14
tickFontSize = 12

for k in 1:size(probs, 1)
global probs, Ns, fullMeans, fullMedians, fullElapsed, fullTols
p1[k] = Plots.plot(fullTols[k], fullMeans[k], xscale = :log10, yscale = :log10,
xguide = "Absolute Tolerance", yguide = "Mean Final Error",
title = "Example $k", linewidth = lw, grid = false, lab = leg,
titlefont = font(titleFontSize), legendfont = font(legendFontSize),
tickfont = font(tickFontSize), guidefont = font(guideFontSize))
p2[k] = Plots.plot(fullTols[k], fullMedians[k], xscale = :log10, yscale = :log10,
xguide = "Absolute Tolerance", yguide = "Median Final Error",
title = "Example $k", linewidth = lw, grid = false, lab = leg,
titlefont = font(titleFontSize), legendfont = font(legendFontSize),
tickfont = font(tickFontSize), guidefont = font(guideFontSize))
p3[k] = Plots.plot(fullTols[k], fullElapsed[k], xscale = :log10, yscale = :log10,
xguide = "Absolute Tolerance", yguide = "Elapsed Time",
title = "Example $k", linewidth = lw, grid = false, lab = leg,
titlefont = font(titleFontSize), legendfont = font(legendFontSize),
tickfont = font(tickFontSize), guidefont = font(guideFontSize))
end

Plots.plot!(p1[1])
Plots.plot(p1[1],p1[2],p1[3],layout=(3,1),size=(1000,800))
Plots.plot(p1[1], p1[2], p1[3], layout = (3, 1), size = (1000, 800))
```

```julia
Expand All @@ -148,17 +173,17 @@ Plots.plot(p1[1],p1[2],p1[3],layout=(3,1),size=(1000,800))
```

```julia
plot(p3[1],p3[2],p3[3],layout=(3,1),size=(1000,800))
plot(p3[1], p3[2], p3[3], layout = (3, 1), size = (1000, 800))
#savefig("timevstol.png")
#savefig("timevstol.pdf")
```

```julia
plot(p1[1],p3[1],p1[2],p3[2],p1[3],p3[3],layout=(3,2),size=(1000,800))
plot(p1[1], p3[1], p1[2], p3[2], p1[3], p3[3], layout = (3, 2), size = (1000, 800))
```

```julia

using SciMLBenchmarks
SciMLBenchmarks.bench_footer(WEAVE_ARGS[:folder],WEAVE_ARGS[:file])
SciMLBenchmarks.bench_footer(WEAVE_ARGS[:folder], WEAVE_ARGS[:file])
```
4 changes: 2 additions & 2 deletions benchmarks/AdaptiveSDE/Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b"
ParallelDataTransfer = "2dcacdae-9679-587a-88bb-8b444fb7085b"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
SciMLBenchmarks = "31c91b34-3c75-11e9-0341-95557aab0344"
SDEProblemLibrary = "c72e72a9-a271-4b2b-8966-303ed956772e"
SciMLBenchmarks = "31c91b34-3c75-11e9-0341-95557aab0344"
StochasticDiffEq = "789caeaf-c7a9-5a7d-9973-96adeb23e2a0"

[compat]
DiffEqNoiseProcess = "5.0"
ParallelDataTransfer = "0.5"
Plots = "1.4"
SDEProblemLibrary = "0.1, 1"
SciMLBenchmarks = "0.1"
SDEProblemLibrary = "0.1"
StochasticDiffEq = "6.23"
Loading
Loading