annotate benchmark/benchmarks.jl @ 2082:87157cfca640 feature/sbp_operators/laplace_curvilinear

Add benchmarks for laplace on a bunch of different grids
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 25 Feb 2026 14:33:42 +0100
parents 471a948cd2b2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1171
87bc91def1ff Start setting things up
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 using BenchmarkTools
1375
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
2
1726
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1672
diff changeset
3 using Diffinitive
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1672
diff changeset
4 using Diffinitive.Grids
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1672
diff changeset
5 using Diffinitive.SbpOperators
471a948cd2b2 Rename project from Sbplib to Diffinitive
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1672
diff changeset
6 using Diffinitive.LazyTensors
1171
87bc91def1ff Start setting things up
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7
1375
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
8 using LinearAlgebra
2082
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
9 using StaticArrays
1375
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
10
1171
87bc91def1ff Start setting things up
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 const SUITE = BenchmarkGroup()
87bc91def1ff Start setting things up
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12
1198
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
13
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
14 sz(d) = ntuple(i->100, d)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
15 ll(d) = ntuple(i->0., d)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
16 lu(d) = ntuple(i->1., d)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
17
1634
29c7a787e67d Fix bug in benchmarks.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 1529
diff changeset
18 g1 = equidistant_grid(ll(1)[1], lu(1)[1], sz(1)...)
29c7a787e67d Fix bug in benchmarks.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 1529
diff changeset
19 g2 = equidistant_grid(ll(2), lu(2), sz(2)...)
29c7a787e67d Fix bug in benchmarks.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 1529
diff changeset
20 g3 = equidistant_grid(ll(3), lu(3), sz(3)...)
1198
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
21
2082
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
22
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
23 c = Chart(unitsquare()) do (ξ,η)
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
24 @SVector[2ξ + η*(1-η), 3η+(1+η/2)*ξ^2]
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
25 end
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
26 Grids.jacobian(c::typeof(c), (ξ,η)) = @SMatrix[2 1-2η; (2+η)*ξ 3+ξ^2/2]
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
27
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
28 g2_curved = equidistant_grid(c, sz(2)...)
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
29
1198
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
30 v1 = rand(sz(1)...)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
31 v2 = rand(sz(2)...)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
32 v3 = rand(sz(3)...)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
33
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
34 u1 = rand(sz(1)...)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
35 u2 = rand(sz(2)...)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
36 u3 = rand(sz(3)...)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
37
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
38 stencil_set = read_stencil_set(joinpath(sbp_operators_path(),"standard_diagonal.toml"); order=4)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
39
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
40 SUITE["derivatives"] = BenchmarkGroup()
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
41
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
42
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
43 SUITE["derivatives"]["first_derivative"] = BenchmarkGroup()
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
44
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
45 D₁ = first_derivative(g1,stencil_set)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
46 SUITE["derivatives"]["first_derivative"]["1D"] = @benchmarkable $u1 .= $D₁*$v1
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
47
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
48 Dx = first_derivative(g2,stencil_set,1)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
49 Dy = first_derivative(g2,stencil_set,2)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
50 SUITE["derivatives"]["first_derivative"]["2D"] = BenchmarkGroup()
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
51 SUITE["derivatives"]["first_derivative"]["2D"]["x"] = @benchmarkable $u2 .= $Dx*$v2
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
52 SUITE["derivatives"]["first_derivative"]["2D"]["y"] = @benchmarkable $u2 .= $Dy*$v2
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
53
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
54 Dx = first_derivative(g3,stencil_set,1)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
55 Dy = first_derivative(g3,stencil_set,2)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
56 Dz = first_derivative(g3,stencil_set,3)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
57 SUITE["derivatives"]["first_derivative"]["3D"] = BenchmarkGroup()
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
58 SUITE["derivatives"]["first_derivative"]["3D"]["x"] = @benchmarkable $u3 .= $Dx*$v3
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
59 SUITE["derivatives"]["first_derivative"]["3D"]["y"] = @benchmarkable $u3 .= $Dy*$v3
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
60 SUITE["derivatives"]["first_derivative"]["3D"]["z"] = @benchmarkable $u3 .= $Dz*$v3
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
61
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
62
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
63 SUITE["derivatives"]["second_derivative"] = BenchmarkGroup()
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
64
1199
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
65 D₂ = second_derivative(g1,stencil_set)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
66 SUITE["derivatives"]["second_derivative"]["1D"] = @benchmarkable $u1 .= $D₂*$v1
1198
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
67
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
68 Dx = second_derivative(g2,stencil_set,1)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
69 Dy = second_derivative(g2,stencil_set,2)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
70 SUITE["derivatives"]["second_derivative"]["2D"] = BenchmarkGroup()
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
71 SUITE["derivatives"]["second_derivative"]["2D"]["x"] = @benchmarkable $u2 .= $Dx*$v2
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
72 SUITE["derivatives"]["second_derivative"]["2D"]["y"] = @benchmarkable $u2 .= $Dy*$v2
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
73
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
74 Dx = second_derivative(g3,stencil_set,1)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
75 Dy = second_derivative(g3,stencil_set,2)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
76 Dz = second_derivative(g3,stencil_set,3)
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
77 SUITE["derivatives"]["second_derivative"]["3D"] = BenchmarkGroup()
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
78 SUITE["derivatives"]["second_derivative"]["3D"]["x"] = @benchmarkable $u3 .= $Dx*$v3
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
79 SUITE["derivatives"]["second_derivative"]["3D"]["y"] = @benchmarkable $u3 .= $Dy*$v3
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
80 SUITE["derivatives"]["second_derivative"]["3D"]["z"] = @benchmarkable $u3 .= $Dz*$v3
5d4a15d6118f Add some actual benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1190
diff changeset
81
1171
87bc91def1ff Start setting things up
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
82
1375
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
83 SUITE["derivatives"]["second_derivative_variable"] = BenchmarkGroup()
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
84
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
85 c1 = map(x->sin(x)+2, g1)
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
86 D₂ = second_derivative_variable(g1, c1, stencil_set)
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
87 SUITE["derivatives"]["second_derivative_variable"]["1D"] = @benchmarkable $u1 .= $D₂*$v1
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
88
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
89 c2 = map(x->sin(x[1] + x[2])+2, g2)
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
90 Dx = second_derivative_variable(g2, c2, stencil_set, 1)
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
91 Dy = second_derivative_variable(g2, c2, stencil_set, 2)
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
92 SUITE["derivatives"]["second_derivative_variable"]["2D"] = BenchmarkGroup()
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
93 SUITE["derivatives"]["second_derivative_variable"]["2D"]["x"] = @benchmarkable $u2 .= $Dx*$v2
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
94 SUITE["derivatives"]["second_derivative_variable"]["2D"]["y"] = @benchmarkable $u2 .= $Dy*$v2
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
95
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
96 c3 = map(x->sin(norm(x))+2, g3)
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
97 Dx = second_derivative_variable(g3, c3, stencil_set, 1)
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
98 Dy = second_derivative_variable(g3, c3, stencil_set, 2)
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
99 Dz = second_derivative_variable(g3, c3, stencil_set, 3)
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
100 SUITE["derivatives"]["second_derivative_variable"]["3D"] = BenchmarkGroup()
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
101 SUITE["derivatives"]["second_derivative_variable"]["3D"]["x"] = @benchmarkable $u3 .= $Dx*$v3
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
102 SUITE["derivatives"]["second_derivative_variable"]["3D"]["y"] = @benchmarkable $u3 .= $Dy*$v3
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
103 SUITE["derivatives"]["second_derivative_variable"]["3D"]["z"] = @benchmarkable $u3 .= $Dz*$v3
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
104
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
105
127d2558926e Add some benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1360
diff changeset
106
2082
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
107 SUITE["derivatives"]["laplace"] = BenchmarkGroup()
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
108
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
109 Δ = laplace(g1, stencil_set)
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
110 SUITE["derivatives"]["laplace"]["1D"] = @benchmarkable $u1 .= $Δ*$v1
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
111
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
112 Δ = laplace(g2, stencil_set)
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
113 SUITE["derivatives"]["laplace"]["2D"] = @benchmarkable $u2 .= $Δ*$v2
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
114
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
115 Δ = laplace(g2_curved, stencil_set)
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
116 SUITE["derivatives"]["laplace"]["2D_curved"] = @benchmarkable $u2 .= $Δ*$v2
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
117
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
118 Δ = laplace(g3, stencil_set)
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
119 SUITE["derivatives"]["laplace"]["3D"] = @benchmarkable $u3 .= $Δ*$v3
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
120
87157cfca640 Add benchmarks for laplace on a bunch of different grids
Jonatan Werpers <jonatan@werpers.com>
parents: 1726
diff changeset
121
1199
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
122
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
123 SUITE["derivatives"]["addition"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
124
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
125 D₁ = first_derivative(g1,stencil_set)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
126 D₂ = second_derivative(g1,stencil_set)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
127 SUITE["derivatives"]["addition"]["1D"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
128 SUITE["derivatives"]["addition"]["1D"]["apply,add"] = @benchmarkable $u1 .= $D₁*$v1 + $D₂*$v1
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
129 SUITE["derivatives"]["addition"]["1D"]["add,apply"] = @benchmarkable $u1 .= ($D₁ + $D₂)*$v1
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
130
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
131 Dxx = second_derivative(g2,stencil_set,1)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
132 Dyy = second_derivative(g2,stencil_set,2)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
133 SUITE["derivatives"]["addition"]["2D"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
134 SUITE["derivatives"]["addition"]["2D"]["apply,add"] = @benchmarkable $u2 .= $Dxx*$v2 + $Dyy*$v2
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
135 SUITE["derivatives"]["addition"]["2D"]["add,apply"] = @benchmarkable $u2 .= ($Dxx + $Dyy)*$v2
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
136
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
137 Dxx = second_derivative(g3,stencil_set,1)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
138 Dyy = second_derivative(g3,stencil_set,2)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
139 Dzz = second_derivative(g3,stencil_set,3)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
140 SUITE["derivatives"]["addition"]["3D"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
141 SUITE["derivatives"]["addition"]["3D"]["apply,add"] = @benchmarkable $u3 .= $Dxx*$v3 + $Dyy*$v3 + $Dzz*$v3
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
142 SUITE["derivatives"]["addition"]["3D"]["add,apply"] = @benchmarkable $u3 .= ($Dxx + $Dyy + $Dzz)*$v3
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
143
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
144
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
145 SUITE["derivatives"]["composition"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
146
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
147 Dx = first_derivative(g1,stencil_set)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
148 SUITE["derivatives"]["composition"]["1D"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
149 SUITE["derivatives"]["composition"]["1D"]["apply,apply"] = @benchmarkable $u1 .= $Dx*($Dx*$v1)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
150 SUITE["derivatives"]["composition"]["1D"]["compose,apply"] = @benchmarkable $u1 .= ($Dx∘$Dx)*$v1
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
151
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
152 Dx = first_derivative(g2,stencil_set,1)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
153 Dy = first_derivative(g2,stencil_set,2)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
154 SUITE["derivatives"]["composition"]["2D"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
155 SUITE["derivatives"]["composition"]["2D"]["apply,apply"] = @benchmarkable $u2 .= $Dy*($Dx*$v2)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
156 SUITE["derivatives"]["composition"]["2D"]["compose,apply"] = @benchmarkable $u2 .= ($Dy∘$Dx)*$v2
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
157
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
158 Dx = first_derivative(g3,stencil_set,1)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
159 Dy = first_derivative(g3,stencil_set,2)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
160 Dz = first_derivative(g3,stencil_set,3)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
161 SUITE["derivatives"]["composition"]["3D"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
162 SUITE["derivatives"]["composition"]["3D"]["xy"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
163 SUITE["derivatives"]["composition"]["3D"]["xy"]["apply,apply"] = @benchmarkable $u3 .= $Dx*($Dy*$v3)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
164 SUITE["derivatives"]["composition"]["3D"]["xy"]["compose,apply"] = @benchmarkable $u3 .= ($Dx∘$Dy)*$v3
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
165
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
166 SUITE["derivatives"]["composition"]["3D"]["yz"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
167 SUITE["derivatives"]["composition"]["3D"]["yz"]["apply,apply"] = @benchmarkable $u3 .= $Dy*($Dz*$v3)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
168 SUITE["derivatives"]["composition"]["3D"]["yz"]["compose,apply"] = @benchmarkable $u3 .= ($Dy∘$Dz)*$v3
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
169
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
170 SUITE["derivatives"]["composition"]["3D"]["xz"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
171 SUITE["derivatives"]["composition"]["3D"]["xz"]["apply,apply"] = @benchmarkable $u3 .= $Dx*($Dz*$v3)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
172 SUITE["derivatives"]["composition"]["3D"]["xz"]["compose,apply"] = @benchmarkable $u3 .= ($Dx∘$Dz)*$v3
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
173
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
174 SUITE["derivatives"]["composition"]["3D"]["xx"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
175 SUITE["derivatives"]["composition"]["3D"]["xx"]["apply,apply"] = @benchmarkable $u3 .= $Dx*($Dx*$v3)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
176 SUITE["derivatives"]["composition"]["3D"]["xx"]["compose,apply"] = @benchmarkable $u3 .= ($Dx∘$Dx)*$v3
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
177
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
178 SUITE["derivatives"]["composition"]["3D"]["yy"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
179 SUITE["derivatives"]["composition"]["3D"]["yy"]["apply,apply"] = @benchmarkable $u3 .= $Dy*($Dy*$v3)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
180 SUITE["derivatives"]["composition"]["3D"]["yy"]["compose,apply"] = @benchmarkable $u3 .= ($Dy∘$Dy)*$v3
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
181
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
182 SUITE["derivatives"]["composition"]["3D"]["zz"] = BenchmarkGroup()
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
183 SUITE["derivatives"]["composition"]["3D"]["zz"]["apply,apply"] = @benchmarkable $u3 .= $Dz*($Dz*$v3)
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
184 SUITE["derivatives"]["composition"]["3D"]["zz"]["compose,apply"] = @benchmarkable $u3 .= ($Dz∘$Dz)*$v3
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
185
1211
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
186
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
187 SUITE["boundary_terms"] = BenchmarkGroup()
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
188
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
189 H = inner_product(g2, stencil_set)
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
190 H⁻¹ = inverse_inner_product(g2, stencil_set)
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
191 Dxx = second_derivative(g2, stencil_set, 1)
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
192 Dyy = second_derivative(g2, stencil_set, 2)
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
193
1672
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
194 e₁ₗ = boundary_restriction(g2, stencil_set, CartesianBoundary{1,LowerBoundary}())
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
195 e₁ᵤ = boundary_restriction(g2, stencil_set, CartesianBoundary{1,UpperBoundary}())
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
196 e₂ₗ = boundary_restriction(g2, stencil_set, CartesianBoundary{2,LowerBoundary}())
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
197 e₂ᵤ = boundary_restriction(g2, stencil_set, CartesianBoundary{2,UpperBoundary}())
1211
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
198
1672
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
199 d₁ₗ = normal_derivative(g2, stencil_set, CartesianBoundary{1,LowerBoundary}())
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
200 d₁ᵤ = normal_derivative(g2, stencil_set, CartesianBoundary{1,UpperBoundary}())
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
201 d₂ₗ = normal_derivative(g2, stencil_set, CartesianBoundary{2,LowerBoundary}())
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
202 d₂ᵤ = normal_derivative(g2, stencil_set, CartesianBoundary{2,UpperBoundary}())
1211
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
203
1672
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
204 H₁ₗ = inner_product(boundary_grid(g2, CartesianBoundary{1,LowerBoundary}()), stencil_set)
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
205 H₁ᵤ = inner_product(boundary_grid(g2, CartesianBoundary{1,UpperBoundary}()), stencil_set)
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
206 H₂ₗ = inner_product(boundary_grid(g2, CartesianBoundary{2,LowerBoundary}()), stencil_set)
3714a391545a Make the boundary identifiers for EquidistantGrid subtype BoundaryIdentifer
Vidar Stiernström <vidar.stiernstrom@gmail.com>
parents: 1635
diff changeset
207 H₂ᵤ = inner_product(boundary_grid(g2, CartesianBoundary{2,UpperBoundary}()), stencil_set)
1211
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
208
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
209 SUITE["boundary_terms"]["pre_composition"] = @benchmarkable $u2 .= $(H⁻¹∘e₁ₗ'∘H₁ₗ∘d₁ₗ)*$v2
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
210 SUITE["boundary_terms"]["composition"] = @benchmarkable $u2 .= ($H⁻¹∘$e₁ₗ'∘$H₁ₗ∘$d₁ₗ)*$v2
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
211 SUITE["boundary_terms"]["application"] = @benchmarkable $u2 .= $H⁻¹*$e₁ₗ'*$H₁ₗ* $d₁ₗ*$v2
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
212 # An investigation of these allocations can be found in the branch `allocation_test`
58a7aa15ce68 Add boundary term benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1199
diff changeset
213
1199
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
214 #TODO: Reorg with dimension as first level? To reduce operator creation?
f095c02081eb More benchmarks
Jonatan Werpers <jonatan@werpers.com>
parents: 1198
diff changeset
215
1304
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
216
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
217
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
218 SUITE["lazy_tensors"] = BenchmarkGroup()
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
219
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
220 SUITE["lazy_tensors"]["compositions"] = BenchmarkGroup()
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
221 s = ScalingTensor(1.,(10,))
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
222 u = rand(10)
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
223 v = similar(u)
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
224 s3 = s∘s∘s
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
225 s4 = s∘s∘s∘s
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
226 SUITE["lazy_tensors"]["compositions"]["s∘s∘s"] = @benchmarkable $v .= $s3*$u
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
227 SUITE["lazy_tensors"]["compositions"]["s∘s∘s∘s"] = @benchmarkable $v .= $s4*$u
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
228
37d615522c2f Add a simple benchmark demonstrating allocations with compositions
Jonatan Werpers <jonatan@werpers.com>
parents: 1211
diff changeset
229
1171
87bc91def1ff Start setting things up
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
230 SUITE