Mercurial > repos > public > sbplib_julia
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 |
| rev | line source |
|---|---|
| 1171 | 1 using BenchmarkTools |
| 1375 | 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 | 7 |
| 1375 | 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 | 10 |
| 1171 | 11 const SUITE = BenchmarkGroup() |
| 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 | 65 D₂ = second_derivative(g1,stencil_set) |
| 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 | 82 |
| 1375 | 83 SUITE["derivatives"]["second_derivative_variable"] = BenchmarkGroup() |
| 84 | |
| 85 c1 = map(x->sin(x)+2, g1) | |
| 86 D₂ = second_derivative_variable(g1, c1, stencil_set) | |
| 87 SUITE["derivatives"]["second_derivative_variable"]["1D"] = @benchmarkable $u1 .= $D₂*$v1 | |
| 88 | |
| 89 c2 = map(x->sin(x[1] + x[2])+2, g2) | |
| 90 Dx = second_derivative_variable(g2, c2, stencil_set, 1) | |
| 91 Dy = second_derivative_variable(g2, c2, stencil_set, 2) | |
| 92 SUITE["derivatives"]["second_derivative_variable"]["2D"] = BenchmarkGroup() | |
| 93 SUITE["derivatives"]["second_derivative_variable"]["2D"]["x"] = @benchmarkable $u2 .= $Dx*$v2 | |
| 94 SUITE["derivatives"]["second_derivative_variable"]["2D"]["y"] = @benchmarkable $u2 .= $Dy*$v2 | |
| 95 | |
| 96 c3 = map(x->sin(norm(x))+2, g3) | |
| 97 Dx = second_derivative_variable(g3, c3, stencil_set, 1) | |
| 98 Dy = second_derivative_variable(g3, c3, stencil_set, 2) | |
| 99 Dz = second_derivative_variable(g3, c3, stencil_set, 3) | |
| 100 SUITE["derivatives"]["second_derivative_variable"]["3D"] = BenchmarkGroup() | |
| 101 SUITE["derivatives"]["second_derivative_variable"]["3D"]["x"] = @benchmarkable $u3 .= $Dx*$v3 | |
| 102 SUITE["derivatives"]["second_derivative_variable"]["3D"]["y"] = @benchmarkable $u3 .= $Dy*$v3 | |
| 103 SUITE["derivatives"]["second_derivative_variable"]["3D"]["z"] = @benchmarkable $u3 .= $Dz*$v3 | |
| 104 | |
| 105 | |
| 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 | 122 |
| 123 SUITE["derivatives"]["addition"] = BenchmarkGroup() | |
| 124 | |
| 125 D₁ = first_derivative(g1,stencil_set) | |
| 126 D₂ = second_derivative(g1,stencil_set) | |
| 127 SUITE["derivatives"]["addition"]["1D"] = BenchmarkGroup() | |
| 128 SUITE["derivatives"]["addition"]["1D"]["apply,add"] = @benchmarkable $u1 .= $D₁*$v1 + $D₂*$v1 | |
| 129 SUITE["derivatives"]["addition"]["1D"]["add,apply"] = @benchmarkable $u1 .= ($D₁ + $D₂)*$v1 | |
| 130 | |
| 131 Dxx = second_derivative(g2,stencil_set,1) | |
| 132 Dyy = second_derivative(g2,stencil_set,2) | |
| 133 SUITE["derivatives"]["addition"]["2D"] = BenchmarkGroup() | |
| 134 SUITE["derivatives"]["addition"]["2D"]["apply,add"] = @benchmarkable $u2 .= $Dxx*$v2 + $Dyy*$v2 | |
| 135 SUITE["derivatives"]["addition"]["2D"]["add,apply"] = @benchmarkable $u2 .= ($Dxx + $Dyy)*$v2 | |
| 136 | |
| 137 Dxx = second_derivative(g3,stencil_set,1) | |
| 138 Dyy = second_derivative(g3,stencil_set,2) | |
| 139 Dzz = second_derivative(g3,stencil_set,3) | |
| 140 SUITE["derivatives"]["addition"]["3D"] = BenchmarkGroup() | |
| 141 SUITE["derivatives"]["addition"]["3D"]["apply,add"] = @benchmarkable $u3 .= $Dxx*$v3 + $Dyy*$v3 + $Dzz*$v3 | |
| 142 SUITE["derivatives"]["addition"]["3D"]["add,apply"] = @benchmarkable $u3 .= ($Dxx + $Dyy + $Dzz)*$v3 | |
| 143 | |
| 144 | |
| 145 SUITE["derivatives"]["composition"] = BenchmarkGroup() | |
| 146 | |
| 147 Dx = first_derivative(g1,stencil_set) | |
| 148 SUITE["derivatives"]["composition"]["1D"] = BenchmarkGroup() | |
| 149 SUITE["derivatives"]["composition"]["1D"]["apply,apply"] = @benchmarkable $u1 .= $Dx*($Dx*$v1) | |
| 150 SUITE["derivatives"]["composition"]["1D"]["compose,apply"] = @benchmarkable $u1 .= ($Dx∘$Dx)*$v1 | |
| 151 | |
| 152 Dx = first_derivative(g2,stencil_set,1) | |
| 153 Dy = first_derivative(g2,stencil_set,2) | |
| 154 SUITE["derivatives"]["composition"]["2D"] = BenchmarkGroup() | |
| 155 SUITE["derivatives"]["composition"]["2D"]["apply,apply"] = @benchmarkable $u2 .= $Dy*($Dx*$v2) | |
| 156 SUITE["derivatives"]["composition"]["2D"]["compose,apply"] = @benchmarkable $u2 .= ($Dy∘$Dx)*$v2 | |
| 157 | |
| 158 Dx = first_derivative(g3,stencil_set,1) | |
| 159 Dy = first_derivative(g3,stencil_set,2) | |
| 160 Dz = first_derivative(g3,stencil_set,3) | |
| 161 SUITE["derivatives"]["composition"]["3D"] = BenchmarkGroup() | |
| 162 SUITE["derivatives"]["composition"]["3D"]["xy"] = BenchmarkGroup() | |
| 163 SUITE["derivatives"]["composition"]["3D"]["xy"]["apply,apply"] = @benchmarkable $u3 .= $Dx*($Dy*$v3) | |
| 164 SUITE["derivatives"]["composition"]["3D"]["xy"]["compose,apply"] = @benchmarkable $u3 .= ($Dx∘$Dy)*$v3 | |
| 165 | |
| 166 SUITE["derivatives"]["composition"]["3D"]["yz"] = BenchmarkGroup() | |
| 167 SUITE["derivatives"]["composition"]["3D"]["yz"]["apply,apply"] = @benchmarkable $u3 .= $Dy*($Dz*$v3) | |
| 168 SUITE["derivatives"]["composition"]["3D"]["yz"]["compose,apply"] = @benchmarkable $u3 .= ($Dy∘$Dz)*$v3 | |
| 169 | |
| 170 SUITE["derivatives"]["composition"]["3D"]["xz"] = BenchmarkGroup() | |
| 171 SUITE["derivatives"]["composition"]["3D"]["xz"]["apply,apply"] = @benchmarkable $u3 .= $Dx*($Dz*$v3) | |
| 172 SUITE["derivatives"]["composition"]["3D"]["xz"]["compose,apply"] = @benchmarkable $u3 .= ($Dx∘$Dz)*$v3 | |
| 173 | |
| 174 SUITE["derivatives"]["composition"]["3D"]["xx"] = BenchmarkGroup() | |
| 175 SUITE["derivatives"]["composition"]["3D"]["xx"]["apply,apply"] = @benchmarkable $u3 .= $Dx*($Dx*$v3) | |
| 176 SUITE["derivatives"]["composition"]["3D"]["xx"]["compose,apply"] = @benchmarkable $u3 .= ($Dx∘$Dx)*$v3 | |
| 177 | |
| 178 SUITE["derivatives"]["composition"]["3D"]["yy"] = BenchmarkGroup() | |
| 179 SUITE["derivatives"]["composition"]["3D"]["yy"]["apply,apply"] = @benchmarkable $u3 .= $Dy*($Dy*$v3) | |
| 180 SUITE["derivatives"]["composition"]["3D"]["yy"]["compose,apply"] = @benchmarkable $u3 .= ($Dy∘$Dy)*$v3 | |
| 181 | |
| 182 SUITE["derivatives"]["composition"]["3D"]["zz"] = BenchmarkGroup() | |
| 183 SUITE["derivatives"]["composition"]["3D"]["zz"]["apply,apply"] = @benchmarkable $u3 .= $Dz*($Dz*$v3) | |
| 184 SUITE["derivatives"]["composition"]["3D"]["zz"]["compose,apply"] = @benchmarkable $u3 .= ($Dz∘$Dz)*$v3 | |
| 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 | 214 #TODO: Reorg with dimension as first level? To reduce operator creation? |
| 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 | 230 SUITE |
