|
23 | 23 | // performance
|
24 | 24 | #include "traccc/efficiency/finding_performance_writer.hpp"
|
25 | 25 | #include "traccc/efficiency/seeding_performance_writer.hpp"
|
| 26 | +#include "traccc/performance/timer.hpp" |
26 | 27 | #include "traccc/resolution/fitting_performance_writer.hpp"
|
27 | 28 |
|
28 | 29 | // options
|
@@ -161,75 +162,122 @@ int seq_run(const traccc::opts::input_data& input_opts,
|
161 | 162 | ar_writer_cfg.algorithm_name = "ambiguity_resolution";
|
162 | 163 | traccc::finding_performance_writer ar_performance_writer(ar_writer_cfg);
|
163 | 164 |
|
| 165 | + // Timers |
| 166 | + traccc::performance::timing_info elapsedTimes; |
| 167 | + |
164 | 168 | // Loop over events
|
165 | 169 | for (unsigned int event = input_opts.skip;
|
166 | 170 | event < input_opts.events + input_opts.skip; ++event) {
|
167 | 171 |
|
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}; |
169 | 182 |
|
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}; |
177 | 185 |
|
178 |
| - /*------------------- |
179 |
| - Clusterization |
180 |
| - -------------------*/ |
| 186 | + traccc::io::cell_reader_output readOut(&host_mr); |
181 | 187 |
|
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 | + } |
184 | 211 |
|
185 |
| - /*------------------------ |
186 |
| - Spacepoint formation |
187 |
| - ------------------------*/ |
| 212 | + /*------------------------ |
| 213 | + Spacepoint formation |
| 214 | + ------------------------*/ |
188 | 215 |
|
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 | + } |
192 | 223 |
|
193 |
| - /*----------------------- |
194 |
| - Seeding algorithm |
195 |
| - -----------------------*/ |
| 224 | + /*----------------------- |
| 225 | + Seeding algorithm |
| 226 | + -----------------------*/ |
196 | 227 |
|
197 |
| - auto seeds = sa(spacepoints_per_event); |
| 228 | + { |
| 229 | + traccc::performance::timer timer{"Seeding", elapsedTimes}; |
| 230 | + seeds = sa(spacepoints_per_event); |
| 231 | + } |
198 | 232 |
|
199 |
| - /*---------------------------- |
200 |
| - Track params estimation |
201 |
| - ----------------------------*/ |
| 233 | + /*---------------------------- |
| 234 | + Track params estimation |
| 235 | + ----------------------------*/ |
202 | 236 |
|
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 | + } |
204 | 242 |
|
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 | + } |
213 | 259 |
|
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 | + ----------------------------*/ |
220 | 270 |
|
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(); |
224 | 279 |
|
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. |
233 | 281 |
|
234 | 282 | /*------------
|
235 | 283 | Writer
|
@@ -284,6 +332,7 @@ int seq_run(const traccc::opts::input_data& input_opts,
|
284 | 332 | std::cout << "- fitted " << n_fitted_tracks << " tracks" << std::endl;
|
285 | 333 | std::cout << "- resolved " << n_ambiguity_free_tracks << " tracks"
|
286 | 334 | << std::endl;
|
| 335 | + std::cout << "==> Elapsed times...\n" << elapsedTimes << std::endl; |
287 | 336 |
|
288 | 337 | return EXIT_SUCCESS;
|
289 | 338 | }
|
|
0 commit comments