Last active
January 27, 2021 08:29
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Plots | |
#= | |
results obtained from running | |
for polydeg in 1:7 | |
@show polydeg | |
tabulate_benchmarks(benchmark_euler, levels=0:8, polydeg=polydeg) | |
end | |
with https://github.com/jlchan/ESDG.jl/blob/refactor/Trixi_comparison/benchmark_JC/benchmark_euler2D.jl | |
=# | |
results_jesse = """ | |
polydeg = 1 | |
#Elements | Runtime in seconds | |
1 | 5.21e-06 | |
4 | 8.22e-06 | |
16 | 2.01e-05 | |
64 | 7.11e-05 | |
256 | 2.60e-04 | |
1024 | 1.06e-03 | |
4096 | 4.11e-03 | |
16384 | 1.98e-02 | |
65536 | 8.10e-02 | |
polydeg = 2 | |
#Elements | Runtime in seconds | |
1 | 1.30e-05 | |
4 | 1.88e-05 | |
16 | 4.26e-05 | |
64 | 1.40e-04 | |
256 | 5.32e-04 | |
1024 | 2.09e-03 | |
4096 | 8.29e-03 | |
16384 | 3.40e-02 | |
65536 | 1.42e-01 | |
polydeg = 3 | |
#Elements | Runtime in seconds | |
1 | 3.79e-05 | |
4 | 5.06e-05 | |
16 | 1.02e-04 | |
64 | 2.86e-04 | |
256 | 1.08e-03 | |
1024 | 4.01e-03 | |
4096 | 1.60e-02 | |
16384 | 6.59e-02 | |
65536 | 2.83e-01 | |
polydeg = 4 | |
#Elements | Runtime in seconds | |
1 | 8.60e-05 | |
4 | 1.08e-04 | |
16 | 1.93e-04 | |
64 | 5.20e-04 | |
256 | 1.84e-03 | |
1024 | 6.94e-03 | |
4096 | 2.97e-02 | |
16384 | 1.20e-01 | |
65536 | 4.85e-01 | |
polydeg = 5 | |
#Elements | Runtime in seconds | |
1 | 1.67e-04 | |
4 | 2.05e-04 | |
16 | 3.36e-04 | |
64 | 9.18e-04 | |
256 | 3.08e-03 | |
1024 | 1.18e-02 | |
4096 | 4.71e-02 | |
16384 | 1.92e-01 | |
65536 | 7.73e-01 | |
polydeg = 6 | |
#Elements | Runtime in seconds | |
1 | 3.08e-04 | |
4 | 3.67e-04 | |
16 | 5.74e-04 | |
64 | 1.43e-03 | |
256 | 4.72e-03 | |
1024 | 1.79e-02 | |
4096 | 7.10e-02 | |
16384 | 2.88e-01 | |
65536 | 1.15e+00 | |
polydeg = 7 | |
#Elements | Runtime in seconds | |
1 | 5.07e-04 | |
4 | 5.88e-04 | |
16 | 8.93e-04 | |
64 | 2.11e-03 | |
256 | 6.84e-03 | |
1024 | 2.58e-02 | |
4096 | 1.03e-01 | |
16384 | 4.17e-01 | |
65536 | 2.10e+00 | |
polydeg = 15 | |
#Elements | Runtime in seconds | |
1 | 1.14e-02 | |
4 | 1.14e-02 | |
16 | 1.41e-02 | |
64 | 2.23e-02 | |
256 | 5.74e-02 | |
1024 | 2.00e-01 | |
4096 | 7.85e-01 | |
16384 | 3.30e+00 | |
65536 | 1.30e+01 | |
""" | |
#= | |
results obtained from running | |
for polydeg in 1:7 | |
@show polydeg | |
tabulate_benchmarks(benchmark_euler, levels=0:8, polydeg=polydeg) | |
end | |
with https://gist.github.com/ranocha/c24405efce2a2c94af9573208bf2e980 | |
=# | |
results_trixi = """ | |
polydeg = 1 | |
#Elements | Runtime in seconds | |
1 | 1.69e-05 | |
4 | 1.82e-05 | |
16 | 2.23e-05 | |
64 | 3.83e-05 | |
256 | 1.00e-04 | |
1024 | 3.57e-04 | |
4096 | 1.50e-03 | |
16384 | 5.97e-03 | |
65536 | 2.87e-02 | |
polydeg = 2 | |
#Elements | Runtime in seconds | |
1 | 1.85e-05 | |
4 | 2.07e-05 | |
16 | 3.06e-05 | |
64 | 7.05e-05 | |
256 | 2.28e-04 | |
1024 | 9.28e-04 | |
4096 | 3.60e-03 | |
16384 | 1.43e-02 | |
65536 | 6.43e-02 | |
polydeg = 3 | |
#Elements | Runtime in seconds | |
1 | 1.93e-05 | |
4 | 2.47e-05 | |
16 | 4.56e-05 | |
64 | 1.29e-04 | |
256 | 4.70e-04 | |
1024 | 1.91e-03 | |
4096 | 7.45e-03 | |
16384 | 3.05e-02 | |
65536 | 1.31e-01 | |
polydeg = 4 | |
#Elements | Runtime in seconds | |
1 | 2.14e-05 | |
4 | 3.11e-05 | |
16 | 7.11e-05 | |
64 | 2.26e-04 | |
256 | 8.70e-04 | |
1024 | 3.51e-03 | |
4096 | 1.35e-02 | |
16384 | 5.70e-02 | |
65536 | 2.36e-01 | |
polydeg = 5 | |
#Elements | Runtime in seconds | |
1 | 2.38e-05 | |
4 | 4.08e-05 | |
16 | 1.06e-04 | |
64 | 3.70e-04 | |
256 | 1.46e-03 | |
1024 | 5.84e-03 | |
4096 | 2.26e-02 | |
16384 | 9.58e-02 | |
65536 | 3.93e-01 | |
polydeg = 6 | |
#Elements | Runtime in seconds | |
1 | 2.75e-05 | |
4 | 5.34e-05 | |
16 | 1.57e-04 | |
64 | 5.70e-04 | |
256 | 2.27e-03 | |
1024 | 9.05e-03 | |
4096 | 3.55e-02 | |
16384 | 1.49e-01 | |
65536 | 6.07e-01 | |
polydeg = 7 | |
#Elements | Runtime in seconds | |
1 | 3.23e-05 | |
4 | 6.99e-05 | |
16 | 2.27e-04 | |
64 | 8.66e-04 | |
256 | 3.36e-03 | |
1024 | 1.34e-02 | |
4096 | 5.35e-02 | |
16384 | 2.22e-01 | |
65536 | 8.97e-01 | |
polydeg = 15 | |
#Elements | Runtime in seconds | |
1 | 1.25e-04 | |
4 | 4.37e-04 | |
16 | 1.68e-03 | |
64 | 6.58e-03 | |
256 | 2.60e-02 | |
1024 | 1.05e-01 | |
4096 | 4.28e-01 | |
16384 | 1.70e+00 | |
65536 | 6.85e+00 | |
""" | |
function parse_results(result_string) | |
polydegs = Int[] | |
elements = Dict{Int, Vector{Int}}() | |
runtimes = Dict{Int, Vector{Float64}}() | |
for line in eachline(IOBuffer(result_string)) | |
startswith(line, '#') && continue | |
polydeg_match = match(r"polydeg = (\d+)", line) | |
if polydeg_match !== nothing | |
polydeg = parse(Int, polydeg_match.captures[1]) | |
push!(polydegs, polydeg) | |
elements[polydeg] = Int[] | |
runtimes[polydeg] = Float64[] | |
continue | |
end | |
# assume everything follows the convention... | |
line_element, line_runtime = split(line, "|") | |
push!(elements[polydegs[end]], parse(Int, line_element)) | |
push!(runtimes[polydegs[end]], parse(Float64, line_runtime)) | |
end | |
return polydegs, elements, runtimes | |
end | |
# parse and plot results | |
polydegs, elements, runtimes_trixi = parse_results(results_trixi) | |
polydegs_jesse, elements_jesse, runtimes_jesse = parse_results(results_jesse) | |
@assert polydegs == polydegs_jesse | |
@assert elements == elements_jesse | |
plot(xguide="#DOFs per scalar (= #elements * (polydeg + 1)^2)", yguide="Runtime (seconds)", title="Benchmarking Jesse (dashed) vs. Trixi (solid)") | |
colors = ["#E69F00", "#56B4E9", "#009E73", "#0072B2", "#D55E00", "#CC79A7", "#F0E442", "gray"] | |
for (polydeg,color) in zip(polydegs, colors) | |
dof_scaling = (polydeg+1)^2 | |
linewidth = 2 | |
plot!(elements[polydeg] * dof_scaling, runtimes_trixi[polydeg]; label="polydeg = $polydeg", linestyle=:solid, color, linewidth) | |
plot!(elements[polydeg] * dof_scaling, runtimes_jesse[polydeg]; label="", linestyle=:dash, color, linewidth) | |
end | |
plot!(xscale=:log10, yscale=:log10, legend=:bottomright, dpi=120) | |
# savefig("~/benchmark_jesse_trixi_absolute.png") | |
plot(xguide="#DOFs per scalar (= #elements * (polydeg + 1)^2)", yguide="Runtime relative to Trixi", title="Benchmarking Jesse vs. Trixi") | |
for (polydeg,color) in zip(polydegs, colors) | |
dof_scaling = (polydeg+1)^2 | |
linewidth = 2 | |
plot!(elements[polydeg] * dof_scaling, runtimes_jesse[polydeg] ./ runtimes_trixi[polydeg]; label="polydeg = $polydeg", linestyle=:solid, color, linewidth) | |
end | |
plot!(xscale=:log10, legend=:topright, ylim=(0,15), dpi=120) | |
# savefig("~/benchmark_jesse_trixi_relative.png") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment