Skip to content

Commit 3ecd26c

Browse files
committed
Add forgotten InvariantMass fixture
1 parent 9de86e7 commit 3ecd26c

File tree

1 file changed

+31
-42
lines changed

1 file changed

+31
-42
lines changed

soa_wrapper.cpp

Lines changed: 31 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ using S10span = wrapper::wrapper<S10, std::span, L>;
9292
using S64span = wrapper::wrapper<S64, std::span, L>;
9393
using Snbodyspan = wrapper::wrapper<Snbody, std::span, L>;
9494
using Sstencilspan = wrapper::wrapper<Sstencil, std::span, L>;
95+
using PxPyPzMspan = wrapper::wrapper<PxPyPzM, std::span, L>;
9596

9697
INSTANTIATE_BENCHMARKS_F1(BM_CPUEasyRW, S2span, N_Large);
9798
INSTANTIATE_BENCHMARKS_F1(BM_CPUEasyCompute, S2span, N);
@@ -100,49 +101,37 @@ INSTANTIATE_BENCHMARKS_F1(BM_CPUHardRW, S64span, N);
100101
INSTANTIATE_BENCHMARKS_F1(BM_nbody, Snbodyspan, N);
101102
INSTANTIATE_BENCHMARKS_F1(BM_stencil, Sstencilspan, N_Large);
102103

103-
BENCHMARK_MAIN();
104+
template <typename wrapper_span1, typename wrapper_span2, typename N>
105+
class Fixture2 : public benchmark::Fixture {
106+
public:
107+
static constexpr auto n = N::value;
104108

105-
/*
106-
template <template <template <class> class> class S>
107-
void RegisterBenchmarkHelper(const char* name, auto bm_func, std::vector<std::byte*>& buffer_pointers, auto &N) {
108-
for (auto n : N) {
109-
std::size_t bytes = n * factory::get_size_in_bytes<S, L>();
110-
buffer_pointers.emplace_back(new std::byte[bytes]);
111-
auto t = factory::buffer_wrapper<S, L>(buffer_pointers.back(), bytes);
112-
using wrapper_type = wrapper::wrapper<S, std::span, L>;
113-
wrapper_type t_span(t);
114-
benchmark::RegisterBenchmark(name, bm_func, t_span)->Arg(n)->Unit(benchmark::kMillisecond);
115-
}
116-
}
117-
118-
int main(int argc, char** argv) {
119-
120-
std::vector<std::byte *> buffer_pointers;
121-
122-
RegisterBenchmarkHelper<S2>("BM_CPUEasyRW", BM_CPUEasyRW<wrapper::wrapper<S2, std::span, L>>, buffer_pointers, N_Large);
123-
RegisterBenchmarkHelper<S2>("BM_CPUEasyCompute", BM_CPUEasyCompute<wrapper::wrapper<S2, std::span, L>>, buffer_pointers, N);
124-
RegisterBenchmarkHelper<S10>("BM_CPURealRW", BM_CPURealRW<wrapper::wrapper<S10, std::span, L>>, buffer_pointers, N);
125-
RegisterBenchmarkHelper<S64>("BM_CPUHardRW", BM_CPUHardRW<wrapper::wrapper<S64, std::span, L>>, buffer_pointers, N);
126-
RegisterBenchmarkHelper<Snbody>("BM_nbody", BM_nbody<wrapper::wrapper<Snbody, std::span, L>>, buffer_pointers, N);
127-
RegisterBenchmarkHelper<Sstencil>("BM_stencil", BM_stencil<wrapper::wrapper<Sstencil, std::span, L>>, buffer_pointers, N_Large);
128-
129-
for (std::size_t n : N_Large) {
130-
std::size_t bytes = n * factory::get_size_in_bytes<PxPyPzM, L>();
131-
auto buffer1 = new std::byte[bytes];
132-
auto buffer2 = new std::byte[bytes];
133-
auto tpxpypxm1 = factory::buffer_wrapper<PxPyPzM, L>(buffer1, bytes);
134-
auto tpxpypxm2 = factory::buffer_wrapper<PxPyPzM, L>(buffer2, bytes);
135-
using wrapper_type = wrapper::wrapper<PxPyPzM, std::span, L>;
136-
wrapper_type t_span1(tpxpypxm1);
137-
wrapper_type t_span2(tpxpypxm2);
138-
benchmark::RegisterBenchmark("BM_InvariantMass", BM_InvariantMass<wrapper_type, wrapper_type>,
139-
t_span1, t_span2)->Arg(n)->Unit(benchmark::kMillisecond);
109+
template <template <class> class F_type>
110+
using S1 = wrapper_span1::template S_type<F_type>;
111+
112+
template <template <class> class F_type>
113+
using S2 = wrapper_span2::template S_type<F_type>;
114+
115+
std::byte *buffer1, *buffer2;
116+
wrapper_span1 t1;
117+
wrapper_span2 t2;
118+
119+
void SetUp(::benchmark::State &state) override
120+
{
121+
std::size_t bytes1 = n * factory::get_size_in_bytes<S1, L>();
122+
buffer1 = new std::byte[bytes1];
123+
std::size_t bytes2 = n * factory::get_size_in_bytes<S2, L>();
124+
buffer2 = new std::byte[bytes2];
125+
126+
auto s1 = factory::buffer_wrapper<S1, L>(buffer1, bytes1);
127+
auto s2 = factory::buffer_wrapper<S2, L>(buffer2, bytes2);
128+
t1 = static_cast<wrapper_span1>(s1);
129+
t2 = static_cast<wrapper_span2>(s2);
140130
}
141131

142-
benchmark::Initialize(&argc, argv);
143-
benchmark::RunSpecifiedBenchmarks();
144-
benchmark::Shutdown();
132+
void TearDown(::benchmark::State &state) override { std::free(buffer1); std::free(buffer2); }
133+
};
134+
135+
BENCHMARK_MAIN();
145136

146-
for (std::byte * buffer_ptr : buffer_pointers) std::free(buffer_ptr);
147-
}
148-
*/
137+
INSTANTIATE_BENCHMARKS_F2(BM_InvariantMass, PxPyPzMspan, PxPyPzMspan, N_Large);

0 commit comments

Comments
 (0)