@@ -34,50 +34,50 @@ constexpr int numEventsToMix = 5;
3434using namespace o2 ::framework;
3535using namespace o2 ::soa;
3636
37- // static void BM_EventMixingTableCreation(benchmark::State& state)
38- // {
39- // for (auto _ : state) {
40- // // Seed with a real random value, if available
41- // std::default_random_engine e1(1234567891);
42- // std::uniform_real_distribution<float> uniform_dist(0.f, 1.f);
43- // std::uniform_real_distribution<float> uniform_dist_x(-0.065f, 0.073f);
44- // std::uniform_real_distribution<float> uniform_dist_y(-0.320f, 0.360f);
45- // std::uniform_int_distribution<int> uniform_dist_int(0, 5);
46- //
47- // TableBuilder colBuilder;
48- // auto rowWriterCol = colBuilder.cursor<o2::aod::Collisions>();
49- // for (auto i = 0; i < state.range(0); ++i) {
50- // float x = uniform_dist_x(e1);
51- // float y = uniform_dist_y(e1);
52- // rowWriterCol(0, uniform_dist_int(e1),
53- // x, y, uniform_dist(e1),
54- // uniform_dist(e1), uniform_dist(e1), uniform_dist(e1),
55- // uniform_dist(e1), uniform_dist(e1), uniform_dist(e1),
56- // uniform_dist_int(e1), uniform_dist(e1),
57- // uniform_dist_int(e1),
58- // uniform_dist(e1), uniform_dist(e1));
59- // }
60- // auto tableCol = colBuilder.finalize();
61- // o2::aod::Collisions collisions{tableCol};
62- // }
63- // state.SetBytesProcessed(state.iterations() * (12 * sizeof(float) + sizeof(int64_t) + 3 * sizeof(int)) * state.range(0));
64- // }
65- //
66- // BENCHMARK(BM_EventMixingTableCreation)->RangeMultiplier(2)->Range(4, 2 << maxColPairsRange);
67- //
68- // static void BM_EventMixingBinningCreation(benchmark::State& state)
69- // {
70- // std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
71- // std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
72- //
73- // for (auto _ : state) {
74- // using BinningType = ColumnBinningPolicy<o2::aod::collision::PosX, o2::aod::collision::PosY>;
75- // BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
76- // }
77- // state.SetBytesProcessed(state.iterations() * sizeof(float));
78- // }
79- //
80- // BENCHMARK(BM_EventMixingBinningCreation)->RangeMultiplier(2)->Range(4, 2 << maxColPairsRange);
37+ static void BM_EventMixingTableCreation (benchmark::State& state)
38+ {
39+ for (auto _ : state) {
40+ // Seed with a real random value, if available
41+ std::default_random_engine e1 (1234567891 );
42+ std::uniform_real_distribution<float > uniform_dist (0 .f , 1 .f );
43+ std::uniform_real_distribution<float > uniform_dist_x (-0 .065f , 0 .073f );
44+ std::uniform_real_distribution<float > uniform_dist_y (-0 .320f , 0 .360f );
45+ std::uniform_int_distribution<int > uniform_dist_int (0 , 5 );
46+
47+ TableBuilder colBuilder;
48+ auto rowWriterCol = colBuilder.cursor <o2::aod::Collisions>();
49+ for (auto i = 0 ; i < state.range (0 ); ++i) {
50+ float x = uniform_dist_x (e1 );
51+ float y = uniform_dist_y (e1 );
52+ rowWriterCol (0 , uniform_dist_int (e1 ),
53+ x, y, uniform_dist (e1 ),
54+ uniform_dist (e1 ), uniform_dist (e1 ), uniform_dist (e1 ),
55+ uniform_dist (e1 ), uniform_dist (e1 ), uniform_dist (e1 ),
56+ uniform_dist_int (e1 ), uniform_dist (e1 ),
57+ uniform_dist_int (e1 ),
58+ uniform_dist (e1 ), uniform_dist (e1 ));
59+ }
60+ auto tableCol = colBuilder.finalize ();
61+ o2::aod::Collisions collisions{tableCol};
62+ }
63+ state.SetBytesProcessed (state.iterations () * (12 * sizeof (float ) + sizeof (int64_t ) + 3 * sizeof (int )) * state.range (0 ));
64+ }
65+
66+ BENCHMARK (BM_EventMixingTableCreation)->RangeMultiplier(2 )->Range(4UL , 2UL << maxColPairsRange);
67+
68+ static void BM_EventMixingBinningCreation (benchmark::State& state)
69+ {
70+ std::vector<double > xBins{VARIABLE_WIDTH, -0.064 , -0.062 , -0.060 , 0.066 , 0.068 , 0.070 , 0.072 };
71+ std::vector<double > yBins{VARIABLE_WIDTH, -0.320 , -0.301 , -0.300 , 0.330 , 0.340 , 0.350 , 0.360 };
72+
73+ for (auto _ : state) {
74+ using BinningType = ColumnBinningPolicy<o2::aod::collision::PosX, o2::aod::collision::PosY>;
75+ BinningType binningOnPositions{{xBins, yBins}, true }; // true is for 'ignore overflows' (true by default)
76+ }
77+ state.SetBytesProcessed (state.iterations () * sizeof (float ));
78+ }
79+
80+ BENCHMARK (BM_EventMixingBinningCreation)->RangeMultiplier(2 )->Range(4UL , 2UL << maxColPairsRange);
8181
8282static void BM_EventMixingPolicyCreation (benchmark::State& state)
8383{
@@ -115,98 +115,98 @@ static void BM_EventMixingPolicyCreation(benchmark::State& state)
115115 state.SetBytesProcessed (state.iterations () * sizeof (float ) * state.range (0 ));
116116}
117117
118- BENCHMARK (BM_EventMixingPolicyCreation)->RangeMultiplier(2 )->Range(2UL << maxColPairsRange , 2UL << maxColPairsRange);
118+ BENCHMARK (BM_EventMixingPolicyCreation)->RangeMultiplier(2 )->Range(4UL , 2UL << maxColPairsRange);
119119// BENCHMARK(BM_EventMixingPolicyCreation)->DenseRange(2<<20, 2<<21, 50)
120120
121- // static void BM_EventMixingCombinationsCreation(benchmark::State& state)
122- // {
123- // // Seed with a real random value, if available
124- // std::default_random_engine e1(1234567891);
125- // std::uniform_real_distribution<float> uniform_dist(0.f, 1.f);
126- // std::uniform_real_distribution<float> uniform_dist_x(-0.065f, 0.073f);
127- // std::uniform_real_distribution<float> uniform_dist_y(-0.320f, 0.360f);
128- // std::uniform_int_distribution<int> uniform_dist_int(0, 5);
129- //
130- // TableBuilder colBuilder;
131- // auto rowWriterCol = colBuilder.cursor<o2::aod::Collisions>();
132- // for (auto i = 0; i < state.range(0); ++i) {
133- // float x = uniform_dist_x(e1);
134- // float y = uniform_dist_y(e1);
135- // rowWriterCol(0, uniform_dist_int(e1),
136- // x, y, uniform_dist(e1),
137- // uniform_dist(e1), uniform_dist(e1), uniform_dist(e1),
138- // uniform_dist(e1), uniform_dist(e1), uniform_dist(e1),
139- // uniform_dist_int(e1), uniform_dist(e1),
140- // uniform_dist_int(e1),
141- // uniform_dist(e1), uniform_dist(e1));
142- // }
143- // auto tableCol = colBuilder.finalize();
144- // o2::aod::Collisions collisions{tableCol};
145- //
146- // std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
147- // std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
148- // using BinningType = ColumnBinningPolicy<o2::aod::collision::PosX, o2::aod::collision::PosY>;
149- // BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
150- //
151- // auto combPolicy = CombinationsBlockUpperSameIndexPolicy(binningOnPositions, numEventsToMix - 1, -1, collisions, collisions);
152- //
153- // for (auto _ : state) {
154- // auto comb = combinations(combPolicy);
155- // }
156- // state.SetBytesProcessed(state.iterations() * sizeof(float));
157- // }
158- //
159- // BENCHMARK(BM_EventMixingCombinationsCreation)->RangeMultiplier(2)->Range(2 << 25 , 2UL << maxColPairsRange);
121+ static void BM_EventMixingCombinationsCreation (benchmark::State& state)
122+ {
123+ // Seed with a real random value, if available
124+ std::default_random_engine e1 (1234567891 );
125+ std::uniform_real_distribution<float > uniform_dist (0 .f , 1 .f );
126+ std::uniform_real_distribution<float > uniform_dist_x (-0 .065f , 0 .073f );
127+ std::uniform_real_distribution<float > uniform_dist_y (-0 .320f , 0 .360f );
128+ std::uniform_int_distribution<int > uniform_dist_int (0 , 5 );
129+
130+ TableBuilder colBuilder;
131+ auto rowWriterCol = colBuilder.cursor <o2::aod::Collisions>();
132+ for (auto i = 0 ; i < state.range (0 ); ++i) {
133+ float x = uniform_dist_x (e1 );
134+ float y = uniform_dist_y (e1 );
135+ rowWriterCol (0 , uniform_dist_int (e1 ),
136+ x, y, uniform_dist (e1 ),
137+ uniform_dist (e1 ), uniform_dist (e1 ), uniform_dist (e1 ),
138+ uniform_dist (e1 ), uniform_dist (e1 ), uniform_dist (e1 ),
139+ uniform_dist_int (e1 ), uniform_dist (e1 ),
140+ uniform_dist_int (e1 ),
141+ uniform_dist (e1 ), uniform_dist (e1 ));
142+ }
143+ auto tableCol = colBuilder.finalize ();
144+ o2::aod::Collisions collisions{tableCol};
145+
146+ std::vector<double > xBins{VARIABLE_WIDTH, -0.064 , -0.062 , -0.060 , 0.066 , 0.068 , 0.070 , 0.072 };
147+ std::vector<double > yBins{VARIABLE_WIDTH, -0.320 , -0.301 , -0.300 , 0.330 , 0.340 , 0.350 , 0.360 };
148+ using BinningType = ColumnBinningPolicy<o2::aod::collision::PosX, o2::aod::collision::PosY>;
149+ BinningType binningOnPositions{{xBins, yBins}, true }; // true is for 'ignore overflows' (true by default)
150+
151+ auto combPolicy = CombinationsBlockUpperSameIndexPolicy (binningOnPositions, numEventsToMix - 1 , -1 , collisions, collisions);
152+
153+ for (auto _ : state) {
154+ auto comb = combinations (combPolicy);
155+ }
156+ state.SetBytesProcessed (state.iterations () * sizeof (float ));
157+ }
158+
159+ BENCHMARK (BM_EventMixingCombinationsCreation)->RangeMultiplier(2 )->Range(4UL , 2UL << maxColPairsRange);
160160// BENCHMARK(BM_EventMixingCombinationsCreation)->DenseRange(2<<18, 2<<19, 10486);
161161
162- // static void BM_EventMixingCombinations(benchmark::State& state)
163- // {
164- // // Seed with a real random value, if available
165- // std::default_random_engine e1(1234567891);
166- // std::uniform_real_distribution<float> uniform_dist(0.f, 1.f);
167- // std::uniform_real_distribution<float> uniform_dist_x(-0.065f, 0.073f);
168- // std::uniform_real_distribution<float> uniform_dist_y(-0.320f, 0.360f);
169- // std::uniform_int_distribution<int> uniform_dist_int(0, 5);
170- //
171- // TableBuilder colBuilder;
172- // auto rowWriterCol = colBuilder.cursor<o2::aod::Collisions>();
173- // for (auto i = 0; i < state.range(0); ++i) {
174- // float x = uniform_dist_x(e1);
175- // float y = uniform_dist_y(e1);
176- // rowWriterCol(0, uniform_dist_int(e1),
177- // x, y, uniform_dist(e1),
178- // uniform_dist(e1), uniform_dist(e1), uniform_dist(e1),
179- // uniform_dist(e1), uniform_dist(e1), uniform_dist(e1),
180- // uniform_dist_int(e1), uniform_dist(e1),
181- // uniform_dist_int(e1),
182- // uniform_dist(e1), uniform_dist(e1));
183- // }
184- // auto tableCol = colBuilder.finalize();
185- // o2::aod::Collisions collisions{tableCol};
186- //
187- // std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
188- // std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
189- // using BinningType = ColumnBinningPolicy<o2::aod::collision::PosX, o2::aod::collision::PosY>;
190- // BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
191- //
192- // auto combPolicy = CombinationsBlockUpperSameIndexPolicy(binningOnPositions, numEventsToMix - 1, -1, collisions, collisions);
193- //
194- // auto comb = combinations(combPolicy);
195- //
196- // int64_t colCount = 0;
197- //
198- // for (auto _ : state) {
199- // colCount = 0;
200- // for (auto& combT : comb) {
201- // colCount++;
202- // }
203- // benchmark::DoNotOptimize(colCount);
204- // }
205- // state.counters["Mixed collision pairs"] = colCount;
206- // state.SetBytesProcessed(state.iterations() * sizeof(float) * colCount);
207- // }
208- //
209- // BENCHMARK(BM_EventMixingCombinations)->RangeMultiplier(2)->Range(2 << maxColPairsRange , 2UL << maxColPairsRange);
162+ static void BM_EventMixingCombinations (benchmark::State& state)
163+ {
164+ // Seed with a real random value, if available
165+ std::default_random_engine e1 (1234567891 );
166+ std::uniform_real_distribution<float > uniform_dist (0 .f , 1 .f );
167+ std::uniform_real_distribution<float > uniform_dist_x (-0 .065f , 0 .073f );
168+ std::uniform_real_distribution<float > uniform_dist_y (-0 .320f , 0 .360f );
169+ std::uniform_int_distribution<int > uniform_dist_int (0 , 5 );
170+
171+ TableBuilder colBuilder;
172+ auto rowWriterCol = colBuilder.cursor <o2::aod::Collisions>();
173+ for (auto i = 0 ; i < state.range (0 ); ++i) {
174+ float x = uniform_dist_x (e1 );
175+ float y = uniform_dist_y (e1 );
176+ rowWriterCol (0 , uniform_dist_int (e1 ),
177+ x, y, uniform_dist (e1 ),
178+ uniform_dist (e1 ), uniform_dist (e1 ), uniform_dist (e1 ),
179+ uniform_dist (e1 ), uniform_dist (e1 ), uniform_dist (e1 ),
180+ uniform_dist_int (e1 ), uniform_dist (e1 ),
181+ uniform_dist_int (e1 ),
182+ uniform_dist (e1 ), uniform_dist (e1 ));
183+ }
184+ auto tableCol = colBuilder.finalize ();
185+ o2::aod::Collisions collisions{tableCol};
186+
187+ std::vector<double > xBins{VARIABLE_WIDTH, -0.064 , -0.062 , -0.060 , 0.066 , 0.068 , 0.070 , 0.072 };
188+ std::vector<double > yBins{VARIABLE_WIDTH, -0.320 , -0.301 , -0.300 , 0.330 , 0.340 , 0.350 , 0.360 };
189+ using BinningType = ColumnBinningPolicy<o2::aod::collision::PosX, o2::aod::collision::PosY>;
190+ BinningType binningOnPositions{{xBins, yBins}, true }; // true is for 'ignore overflows' (true by default)
191+
192+ auto combPolicy = CombinationsBlockUpperSameIndexPolicy (binningOnPositions, numEventsToMix - 1 , -1 , collisions, collisions);
193+
194+ auto comb = combinations (combPolicy);
195+
196+ int64_t colCount = 0 ;
197+
198+ for (auto _ : state) {
199+ colCount = 0 ;
200+ for (auto & combT : comb) {
201+ colCount++;
202+ }
203+ benchmark::DoNotOptimize (colCount);
204+ }
205+ state.counters [" Mixed collision pairs" ] = colCount;
206+ state.SetBytesProcessed (state.iterations () * sizeof (float ) * colCount);
207+ }
208+
209+ BENCHMARK (BM_EventMixingCombinations)->RangeMultiplier(2 )->Range(4UL , 2UL << maxColPairsRange);
210210// BENCHMARK(BM_EventMixingCombinations)->DenseRange(2<<20, 2<<21, 50)
211211
212212BENCHMARK_MAIN ();
0 commit comments