Skip to content

Commit 2dd3f58

Browse files
Merge pull request #985 from chriselrod/mtkbenchfixes
Further fixes for MTK Benchmarks
2 parents ff74b32 + f35bd34 commit 2dd3f58

File tree

4 files changed

+13
-14
lines changed

4 files changed

+13
-14
lines changed

benchmarks/ModelingToolkit/Multibody_Robot.jmd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ f
7474
using OMJulia
7575
mod = OMJulia.OMCSession();
7676
OMJulia.sendExpression(mod, "getVersion()")
77+
OMJulia.sendExpression(mod, "installPackage(Modelica)")
7778

7879
@show "Start OpenModelica Timings"
7980

benchmarks/ModelingToolkit/Project.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
66
JuliaSimCompiler = "8391cb6b-4921-5777-4e45-fd9aab8cb88d"
77
JuliaSimCompilerRuntime = "9cbdfd5a-25c0-4dde-8b55-206f91b28bd9"
88
LinearSolve = "7ed4a6bd-45f5-4d41-b270-4a48e9bafcae"
9+
Multibody = "e1cad5d1-98ef-44f9-a79a-9ca4547f95b9"
910
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
1011
ModelingToolkitStandardLibrary = "16a59e39-deab-5bd0-87e4-056b12336739"
1112
OMJulia = "0f4fe800-344e-11e9-2949-fb537ad918e1"
@@ -24,11 +25,12 @@ CSV = "0.10"
2425
JuliaSimCompiler = "0.1.9"
2526
JuliaSimCompilerRuntime = "1.0.0"
2627
LinearSolve = "2.30.0"
28+
Multibody = "0.1.0"
2729
ModelingToolkit = "9.19.0"
2830
ModelingToolkitStandardLibrary = "2"
2931
OMJulia = "0.3.1"
3032
OrdinaryDiffEq = "6.84.0"
3133
Polynomials = "4.0.8"
3234
PreferenceTools = "0.1.2"
3335
SciMLBenchmarks = "0.1.3"
34-
Symbolics = "5.30.1"
36+
Symbolics = "5.30.4"

benchmarks/ModelingToolkit/RCCircuit.jmd

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,12 @@ end
9393
N = [5, 10, 20, 40, 60, 80, 160, 320, 480, 640, 800, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10000, 20000];
9494

9595
# max size we test per method
96-
max_sizes = [4_000, 8_000, 20_000, 20_000, 20_000, 20_000, 20_000, 9000, 20_000];
96+
max_sizes = [4_000, 8_000, 20_000, 20_000, 20_000, 20_000, 20_000, 9000];
9797

9898
# NaN-initialize so Makie will ignore incomplete
9999
ss_times = fill(NaN, length(N), 3);
100100
times = fill((NaN,NaN,NaN), length(N), length(max_sizes) - 1);
101-
total_times = fill(NaN, length(N), length(max_sizes));
101+
total_times = fill(NaN, length(N), length(max_sizes) + 1);
102102
```
103103

104104
## Julia Timings
@@ -129,7 +129,6 @@ function time_open_modelica(n::Int)
129129
end
130130

131131
function run_and_time_om!(ss_times, times, max_sizes, i, n)
132-
run_and_time_julia!(ss_times, times, max_sizes, i, n)
133132
if n <= max_sizes[8]
134133
total_times[i, end] = time_open_modelica(n)
135134
end
@@ -197,11 +196,6 @@ for (i, timecat) in enumerate(("ODEProblem + f!", "Run", "Solve"))
197196
end
198197
Legend(f[i+1, 2], _lines, method_names)
199198
end
200-
let method_names_m = vcat(method_names, "OpenModelica");
201-
ax = Axis(f[5, 1]; yscale = log10, xscale = log10, title = "Total Time")
202-
_lines = map(Base.Fix1(lines!, N), eachcol(total_times))
203-
Legend(f[5, 2], _lines, method_names_m)
204-
end
205199
f
206200
```
207201

@@ -218,7 +212,6 @@ Legend(f2[1,2], _lines, names)
218212
f2
219213
```
220214

221-
222215
All three backends compiled more quickly with loops, but the C and LLVM backends are so much quicker to compile than the Julia backend that this made much less difference for them.
223216
The impact on runtime was more varied.
224217

benchmarks/ModelingToolkit/ThermalFluid.jmd

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -302,12 +302,15 @@ end
302302
```julia
303303
N = [5, 10, 20, 40, 60, 80, 160, 320, 480, 640, 800, 960, 1280];
304304
N_states = 4 .* N; # x-axis for plots
305-
# max size we test per method
306-
max_sizes = [480, last(N), last(N), last(N), last(N), last(N)];
305+
# max size we run per method, including Julia methods and OpenModelica
306+
# we do not run Dymola in this script, therefore it is excluded
307+
max_sizes = [480, last(N), last(N), last(N), last(N)];
307308
# NaN-initialize so Makie will ignore incomplete
308309
ss_times = fill(NaN, length(N), 2);
310+
# more indepth Julia-times
309311
times = fill((NaN,NaN,NaN), length(N), length(max_sizes) - 1);
310-
total_times = fill(NaN, length(N), length(max_sizes)+1); # +1 for Dymola
312+
# all times, including Dymola
313+
total_times = fill(NaN, length(N), length(max_sizes) + 1); # +1 for Dymola
311314
```
312315

313316
## Julia Timings
@@ -374,7 +377,7 @@ total_times[:, 6] = translation_and_total_times[1:length(N),2]
374377

375378
```julia
376379
f = Figure(size=(800,1200));
377-
ss_names = ["MTK", "JSIR-Scalar", "JSIR-Loop"];
380+
ss_names = ["MTK", "JSIR"];
378381
let ax = Axis(f[1, 1]; yscale = log10, xscale = log10, title="Structural Simplify Time")
379382
_lines = map(eachcol(ss_times)) do ts
380383
lines!(N, ts)

0 commit comments

Comments
 (0)