RICH Photon Reco - More efficient mirror data cache update implementation.
Implements improvements to the method SIMDQuarticPhotonReco::MirrorData::update()
which caches SIMD information when associated mirror pointers change. Main changes are :
- Avoid pointer dereferences, which are potentially slow due to cache issues, when they are not strictly required (i.e. pointer has not changed).
- Use private minimal implementations of
Point
,Vector
andPlane
that allow direct access to data members, that in turn allowsMirrorData::update()
to be a lot more efficient.
Relies on LHCb!1108 (merged)
Merge request reports
Activity
- [2018-01-31 19:17] Validation started with lhcb-gaudi-merge#402
- [2018-02-02 15:53] Validation started with lhcb-upgrade-hackathon#3
- [2018-02-02 20:51] Validation started with lhcb-gaudi-merge#406
- [2018-02-03 00:09] Validation started with lhcb-clang-test#850
- [2018-02-03 00:11] Validation started with lhcb-head#1743
- [2018-02-03 00:11] Validation started with lhcb-gaudi-head-py3#53
- [2018-02-03 00:14] Validation started with lhcb-tdr-test#47
- [2018-02-03 00:16] Validation started with lhcb-gaudi-head#1745
Edited by Software for LHCbmentioned in merge request !886 (merged)
Just for the record, this introduces tiny numerical differences in some of the Brunel tests - look at diffs between https://lhcb-nightlies.cern.ch/logs/tests/nightly/lhcb-upgrade-hackathon/3/x86_64-centos7-gcc62-opt/Brunel/ and https://lhcb-nightlies.cern.ch/logs/tests/nightly/lhcb-upgrade-hackathon/2/x86_64-centos7-gcc62-opt/Brunel/, where the only difference is this MR
mentioned in commit a6620e61
Tiny diffs like these are not impossible. One thing the MR removes is an un-neccessary (re)-normalisation of the (A,B,C,D) parameters used to describe a Plane. The normalisation is not required, as the parameters are already normalised, by removing this step could introduce a some minor diffs, in the lowest bits.