Skip to content

Commit 002bd91

Browse files
authored
Add timers to seq_example (#541)
* Add timers to seq_example * Stack allocation for timers in seq_exemple
1 parent 3b55170 commit 002bd91

File tree

1 file changed

+101
-52
lines changed

1 file changed

+101
-52
lines changed

examples/run/cpu/seq_example.cpp

+101-52
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
// performance
2424
#include "traccc/efficiency/finding_performance_writer.hpp"
2525
#include "traccc/efficiency/seeding_performance_writer.hpp"
26+
#include "traccc/performance/timer.hpp"
2627
#include "traccc/resolution/fitting_performance_writer.hpp"
2728

2829
// options
@@ -161,75 +162,122 @@ int seq_run(const traccc::opts::input_data& input_opts,
161162
ar_writer_cfg.algorithm_name = "ambiguity_resolution";
162163
traccc::finding_performance_writer ar_performance_writer(ar_writer_cfg);
163164

165+
// Timers
166+
traccc::performance::timing_info elapsedTimes;
167+
164168
// Loop over events
165169
for (unsigned int event = input_opts.skip;
166170
event < input_opts.events + input_opts.skip; ++event) {
167171

168-
traccc::io::cell_reader_output readOut(&host_mr);
172+
traccc::host::clusterization_algorithm::output_type
173+
measurements_per_event{&host_mr};
174+
traccc::host::spacepoint_formation_algorithm::output_type
175+
spacepoints_per_event{&host_mr};
176+
traccc::seeding_algorithm::output_type seeds{&host_mr};
177+
traccc::track_params_estimation::output_type params{&host_mr};
178+
finding_algorithm::output_type track_candidates{&host_mr};
179+
fitting_algorithm::output_type track_states{&host_mr};
180+
traccc::greedy_ambiguity_resolution_algorithm::output_type
181+
resolved_track_states{&host_mr};
169182

170-
// Read the cells from the relevant event file
171-
traccc::io::read_cells(readOut, event, input_opts.directory,
172-
input_opts.format, &surface_transforms,
173-
&digi_cfg, barcode_map.get());
174-
traccc::cell_collection_types::host& cells_per_event = readOut.cells;
175-
traccc::cell_module_collection_types::host& modules_per_event =
176-
readOut.modules;
183+
{ // Start measuring wall time.
184+
traccc::performance::timer timer_wall{"Wall time", elapsedTimes};
177185

178-
/*-------------------
179-
Clusterization
180-
-------------------*/
186+
traccc::io::cell_reader_output readOut(&host_mr);
181187

182-
auto measurements_per_event = ca(vecmem::get_data(cells_per_event),
183-
vecmem::get_data(modules_per_event));
188+
{
189+
traccc::performance::timer timer{"Read cells", elapsedTimes};
190+
// Read the cells from the relevant event file
191+
traccc::io::read_cells(readOut, event, input_opts.directory,
192+
input_opts.format, &surface_transforms,
193+
&digi_cfg, barcode_map.get());
194+
}
195+
traccc::cell_collection_types::host& cells_per_event =
196+
readOut.cells;
197+
traccc::cell_module_collection_types::host& modules_per_event =
198+
readOut.modules;
199+
200+
/*-------------------
201+
Clusterization
202+
-------------------*/
203+
204+
{
205+
traccc::performance::timer timer{"Clusterization",
206+
elapsedTimes};
207+
measurements_per_event =
208+
ca(vecmem::get_data(cells_per_event),
209+
vecmem::get_data(modules_per_event));
210+
}
184211

185-
/*------------------------
186-
Spacepoint formation
187-
------------------------*/
212+
/*------------------------
213+
Spacepoint formation
214+
------------------------*/
188215

189-
auto spacepoints_per_event =
190-
sf(vecmem::get_data(measurements_per_event),
191-
vecmem::get_data(modules_per_event));
216+
{
217+
traccc::performance::timer timer{"Spacepoint formation",
218+
elapsedTimes};
219+
spacepoints_per_event =
220+
sf(vecmem::get_data(measurements_per_event),
221+
vecmem::get_data(modules_per_event));
222+
}
192223

193-
/*-----------------------
194-
Seeding algorithm
195-
-----------------------*/
224+
/*-----------------------
225+
Seeding algorithm
226+
-----------------------*/
196227

197-
auto seeds = sa(spacepoints_per_event);
228+
{
229+
traccc::performance::timer timer{"Seeding", elapsedTimes};
230+
seeds = sa(spacepoints_per_event);
231+
}
198232

199-
/*----------------------------
200-
Track params estimation
201-
----------------------------*/
233+
/*----------------------------
234+
Track params estimation
235+
----------------------------*/
202236

203-
auto params = tp(spacepoints_per_event, seeds, field_vec);
237+
{
238+
traccc::performance::timer timer{"Track params estimation",
239+
elapsedTimes};
240+
params = tp(spacepoints_per_event, seeds, field_vec);
241+
}
204242

205-
// Perform track finding and fitting only when using a Detray geometry.
206-
finding_algorithm::output_type track_candidates{&host_mr};
207-
fitting_algorithm::output_type track_states{&host_mr};
208-
if (detector_opts.use_detray_detector) {
209-
track_candidates =
210-
finding_alg(detector, field, measurements_per_event, params);
211-
track_states = fitting_alg(detector, field, track_candidates);
212-
}
243+
// Perform track finding and fitting only when using a Detray
244+
// geometry.
245+
if (detector_opts.use_detray_detector) {
246+
{
247+
traccc::performance::timer timer{"Track finding",
248+
elapsedTimes};
249+
track_candidates = finding_alg(
250+
detector, field, measurements_per_event, params);
251+
}
252+
{
253+
traccc::performance::timer timer{"Track fitting",
254+
elapsedTimes};
255+
track_states =
256+
fitting_alg(detector, field, track_candidates);
257+
}
258+
}
213259

214-
// Perform ambiguity resolution only if asked for.
215-
traccc::greedy_ambiguity_resolution_algorithm::output_type
216-
resolved_track_states{&host_mr};
217-
if (resolution_opts.run) {
218-
resolved_track_states = resolution_alg(track_states);
219-
}
260+
// Perform ambiguity resolution only if asked for.
261+
if (resolution_opts.run) {
262+
traccc::performance::timer timer{"Track ambiguity resolution",
263+
elapsedTimes};
264+
resolved_track_states = resolution_alg(track_states);
265+
}
266+
267+
/*----------------------------
268+
Statistics
269+
----------------------------*/
220270

221-
/*----------------------------
222-
Statistics
223-
----------------------------*/
271+
n_modules += modules_per_event.size();
272+
n_cells += cells_per_event.size();
273+
n_measurements += measurements_per_event.size();
274+
n_spacepoints += spacepoints_per_event.size();
275+
n_seeds += seeds.size();
276+
n_found_tracks += track_candidates.size();
277+
n_fitted_tracks += track_states.size();
278+
n_ambiguity_free_tracks += resolved_track_states.size();
224279

225-
n_modules += modules_per_event.size();
226-
n_cells += cells_per_event.size();
227-
n_measurements += measurements_per_event.size();
228-
n_spacepoints += spacepoints_per_event.size();
229-
n_seeds += seeds.size();
230-
n_found_tracks += track_candidates.size();
231-
n_fitted_tracks += track_states.size();
232-
n_ambiguity_free_tracks += resolved_track_states.size();
280+
} // Stop measuring Wall time.
233281

234282
/*------------
235283
Writer
@@ -284,6 +332,7 @@ int seq_run(const traccc::opts::input_data& input_opts,
284332
std::cout << "- fitted " << n_fitted_tracks << " tracks" << std::endl;
285333
std::cout << "- resolved " << n_ambiguity_free_tracks << " tracks"
286334
<< std::endl;
335+
std::cout << "==> Elapsed times...\n" << elapsedTimes << std::endl;
287336

288337
return EXIT_SUCCESS;
289338
}

0 commit comments

Comments
 (0)