4
4
#include < iostream>
5
5
6
6
using namespace ahr ;
7
+ using namespace ahr ::exp;
7
8
template <typename Exp> static void BM_ExpKXKY (benchmark::State &state) {
8
9
Dim const X = state.range (0 );
9
10
Dim const Y = state.range (1 );
@@ -20,12 +21,34 @@ template <typename Exp> static void BM_ExpKXKY(benchmark::State &state) {
20
21
}
21
22
}
22
23
23
- BENCHMARK_WMIN (BM_ExpKXKY<exp::Eta>)
24
+ template <typename Exp> static void BM_ExpM (benchmark::State &state) {
25
+ Dim const M = state.range (0 );
26
+ Dim const X = state.range (1 );
27
+ Dim const Y = state.range (2 );
28
+
29
+ Grid grid{M, X, Y};
30
+ Real dt = 1.0 ;
31
+ HyperCoefficients hyper = HyperCoefficients::calculate (dt, grid);
32
+
33
+ Exp exp{grid};
34
+ exp.update (hyper, dt);
35
+
36
+ for (auto _ : state) {
37
+ for (Dim m = 0 ; m < M; ++m) {
38
+ grid.for_each_kxky ([&](Dim kx, Dim ky) { benchmark::DoNotOptimize (exp (m)); });
39
+ }
40
+ }
41
+ }
42
+
43
+ BENCHMARK_WMIN (BM_ExpKXKY<Eta>)
24
44
->ArgsProduct({{2048 , 4096 , 8192 }, {2048 , 4096 , 8192 }})
25
45
->Unit(benchmark::kMillisecond );
26
- BENCHMARK_WMIN (BM_ExpKXKY<exp:: Nu>)
46
+ BENCHMARK_WMIN (BM_ExpKXKY<Nu>)
27
47
->ArgsProduct({{2048 , 4096 , 8192 }, {2048 , 4096 , 8192 }})
28
48
->Unit(benchmark::kMillisecond );
29
- BENCHMARK_WMIN (BM_ExpKXKY<exp:: NuG>)
49
+ BENCHMARK_WMIN (BM_ExpKXKY<NuG>)
30
50
->ArgsProduct({{2048 , 4096 , 8192 }, {2048 , 4096 , 8192 }})
31
51
->Unit(benchmark::kMillisecond );
52
+ BENCHMARK_WMIN (BM_ExpM<GM>)
53
+ ->ArgsProduct({{2 , 4 , 10 }, {2048 , 4096 }, {2048 , 4096 }})
54
+ ->Unit(benchmark::kMillisecond );
0 commit comments