Skip to content

HLTControlFlowMgr introduce optional calling of sysExecute or execute and implement a timing table

Christoph Hasse requested to merge chasse_HLTControlFloMGgrTiming into master

This is based on gaudi/Gaudi!981 (merged), which changes the functional algorithms to return a special StatusCode including the FilterPassed decision.
This allows us to directly call execute and use its return value to determine controlflow decisions. An option CallSysExecute is introduced which decides if the old sysExecute call should be used. This enables the scheduler to still run old algos like the ones in Phys. If the option is false the direct call to execute is used.

TimingCounters are implemented around the execution call to print a timing table during finalize. Whether or not the timing is actually performed depends on the new property CreateTimingTable, default is true.
I've locally tested the full HLT1 benchmark test and was running on 36kHz including the timing, suggesting that the timing is low enough overhead to be on by default.
Yet, let's see what the nightlies do and then I'm happy to revisit this if need be, but I think the timing table provides valuable output to the default user.

Timing is implemented via calls to __rdtsc() which provides a very low overhead timestamp. (not actually a timestamp but a reference clock cycle stamp...)
For more info on __rdtsc() I suggest a quick look into gaudi/Gaudi!762 (closed) or intel's benchmarking paper

little preview for the impatient ;)

 | Name of Algorithm                               | Execution Count | Total Time / s  | Avg. Time / us   |
 | "DummyEventTime"                                |          500000 |           1.100 |            2.199 |
 | "ReserveIOV"                                    |          500000 |           0.870 |            1.740 |
 | "ReadMDFInput"                                  |          500000 |          67.700 |          135.400 |
 | "PrGECFilter"                                   |          500000 |           0.740 |            1.481 |
 | "VeloClusterTracking"                           |          463942 |         174.668 |          376.488 |
 | "TBLVertexFinder"                               |          463942 |          14.442 |           31.129 |
 | "FilterOnNoPVs"                                 |          463942 |           0.820 |            1.768 |
 | "createFTClusters"                              |          461635 |          13.664 |           29.598 |
 | "SciFiTrackForwarding_Conv"                     |          461635 |          18.745 |           40.606 |
 | "PrStoreUTHit"                                  |          461635 |          32.002 |           69.323 |
 | "PrVeloUTFast"                                  |          461635 |          50.090 |          108.505 |
 | "UpgradeForward"                                |          461635 |          36.272 |           78.574 |
 | "VeloKalman"                                    |          461635 |           3.282 |            7.109 |
Edited by Christoph Hasse

Merge request reports