Skip to content

Commit 40574bf

Browse files
committed
Uncomment back the parts benchmarks
1 parent e14ffc1 commit 40574bf

File tree

1 file changed

+134
-137
lines changed

1 file changed

+134
-137
lines changed

Framework/Core/test/benchmark_EventMixingParts.cxx

Lines changed: 134 additions & 137 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ using namespace o2::framework;
2222
using namespace arrow;
2323
using namespace o2::soa;
2424

25-
// Validation of new event mixing: time complexity same as for naive loop
25+
// Validation of new event mixing in detail
2626

2727
#ifdef __APPLE__
2828
constexpr unsigned int maxColPairsRange = 20;
@@ -34,50 +34,50 @@ constexpr int numEventsToMix = 5;
3434
using namespace o2::framework;
3535
using 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(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);
8181

8282
static void BM_EventMixingPolicyCreation(benchmark::State& state)
8383
{
@@ -116,97 +116,94 @@ static void BM_EventMixingPolicyCreation(benchmark::State& state)
116116
}
117117

118118
BENCHMARK(BM_EventMixingPolicyCreation)->RangeMultiplier(2)->Range(2UL << maxColPairsRange, 2UL << maxColPairsRange);
119-
//BENCHMARK(BM_EventMixingPolicyCreation)->DenseRange(2<<20, 2<<21, 50)
120-
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);
160-
//BENCHMARK(BM_EventMixingCombinationsCreation)->DenseRange(2<<18, 2<<19, 10486);
161-
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);
210-
//BENCHMARK(BM_EventMixingCombinations)->DenseRange(2<<20, 2<<21, 50)
119+
120+
static void BM_EventMixingCombinationsCreation(benchmark::State& state)
121+
{
122+
// Seed with a real random value, if available
123+
std::default_random_engine e1(1234567891);
124+
std::uniform_real_distribution<float> uniform_dist(0.f, 1.f);
125+
std::uniform_real_distribution<float> uniform_dist_x(-0.065f, 0.073f);
126+
std::uniform_real_distribution<float> uniform_dist_y(-0.320f, 0.360f);
127+
std::uniform_int_distribution<int> uniform_dist_int(0, 5);
128+
129+
TableBuilder colBuilder;
130+
auto rowWriterCol = colBuilder.cursor<o2::aod::Collisions>();
131+
for (auto i = 0; i < state.range(0); ++i) {
132+
float x = uniform_dist_x(e1);
133+
float y = uniform_dist_y(e1);
134+
rowWriterCol(0, uniform_dist_int(e1),
135+
x, y, uniform_dist(e1),
136+
uniform_dist(e1), uniform_dist(e1), uniform_dist(e1),
137+
uniform_dist(e1), uniform_dist(e1), uniform_dist(e1),
138+
uniform_dist_int(e1), uniform_dist(e1),
139+
uniform_dist_int(e1),
140+
uniform_dist(e1), uniform_dist(e1));
141+
}
142+
auto tableCol = colBuilder.finalize();
143+
o2::aod::Collisions collisions{tableCol};
144+
145+
std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
146+
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
147+
using BinningType = ColumnBinningPolicy<o2::aod::collision::PosX, o2::aod::collision::PosY>;
148+
BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
149+
150+
auto combPolicy = CombinationsBlockUpperSameIndexPolicy(binningOnPositions, numEventsToMix - 1, -1, collisions, collisions);
151+
152+
for (auto _ : state) {
153+
auto comb = combinations(combPolicy);
154+
}
155+
state.SetBytesProcessed(state.iterations() * sizeof(float));
156+
}
157+
158+
BENCHMARK(BM_EventMixingCombinationsCreation)->RangeMultiplier(2)->Range(2 << 25, 2UL << maxColPairsRange);
159+
160+
static void BM_EventMixingCombinations(benchmark::State& state)
161+
{
162+
// Seed with a real random value, if available
163+
std::default_random_engine e1(1234567891);
164+
std::uniform_real_distribution<float> uniform_dist(0.f, 1.f);
165+
std::uniform_real_distribution<float> uniform_dist_x(-0.065f, 0.073f);
166+
std::uniform_real_distribution<float> uniform_dist_y(-0.320f, 0.360f);
167+
std::uniform_int_distribution<int> uniform_dist_int(0, 5);
168+
169+
TableBuilder colBuilder;
170+
auto rowWriterCol = colBuilder.cursor<o2::aod::Collisions>();
171+
for (auto i = 0; i < state.range(0); ++i) {
172+
float x = uniform_dist_x(e1);
173+
float y = uniform_dist_y(e1);
174+
rowWriterCol(0, uniform_dist_int(e1),
175+
x, y, uniform_dist(e1),
176+
uniform_dist(e1), uniform_dist(e1), uniform_dist(e1),
177+
uniform_dist(e1), uniform_dist(e1), uniform_dist(e1),
178+
uniform_dist_int(e1), uniform_dist(e1),
179+
uniform_dist_int(e1),
180+
uniform_dist(e1), uniform_dist(e1));
181+
}
182+
auto tableCol = colBuilder.finalize();
183+
o2::aod::Collisions collisions{tableCol};
184+
185+
std::vector<double> xBins{VARIABLE_WIDTH, -0.064, -0.062, -0.060, 0.066, 0.068, 0.070, 0.072};
186+
std::vector<double> yBins{VARIABLE_WIDTH, -0.320, -0.301, -0.300, 0.330, 0.340, 0.350, 0.360};
187+
using BinningType = ColumnBinningPolicy<o2::aod::collision::PosX, o2::aod::collision::PosY>;
188+
BinningType binningOnPositions{{xBins, yBins}, true}; // true is for 'ignore overflows' (true by default)
189+
190+
auto combPolicy = CombinationsBlockUpperSameIndexPolicy(binningOnPositions, numEventsToMix - 1, -1, collisions, collisions);
191+
192+
auto comb = combinations(combPolicy);
193+
194+
int64_t colCount = 0;
195+
196+
for (auto _ : state) {
197+
colCount = 0;
198+
for (auto& combT : comb) {
199+
colCount++;
200+
}
201+
benchmark::DoNotOptimize(colCount);
202+
}
203+
state.counters["Mixed collision pairs"] = colCount;
204+
state.SetBytesProcessed(state.iterations() * sizeof(float) * colCount);
205+
}
206+
207+
BENCHMARK(BM_EventMixingCombinations)->RangeMultiplier(2)->Range(2 << maxColPairsRange, 2UL << maxColPairsRange);
211208

212209
BENCHMARK_MAIN();

0 commit comments

Comments
 (0)