ATLASRECTS-7693: Keep one impl of the newCovariance, the one that should be ~ 10-15% faster
This is also for @jdandoy @jchapman @jcatmore @nstyles to approve.
This came up during summer on the recurring question (that time by @zmarshal on if we can do things do faster here and there ala HLT).
The answer is kind of yes but since we deal with float if we alter a bit the order of operations it will alter the "binary" result.
In any case
- We have practically 2 implementations of the same thing
- One using
Eigen
and managing a bit better vectorization - Actually, up to summer I had assumed that what is tried here was done 2-3 years ago
- @sroe, @goblirsc prb I mis-remember from the time we introduced the common JacobianHelper.h , why we did not also unified this?
- The idea is to both de-duplicate code and retain only the faster of the 2.
- From then one we will have to deal only with one code location which we could improve furhter.
- The one we keep is located [https://gitlab.cern.ch/atlas/athena/-/blob/main/Tracking/TrkExtrapolation/TrkExUtils/src/RungeKuttaUtils.cxx#L1412]
So this gives something along the following magnitude of changes . It can be viewed as similar in concept to [!66067 (merged)] by @smh
Py:diff-root INFO 000.InDetForwardTrackParticlesAux.definingParametersCovMatrixOffDiag.5.57 8.812105079414323e-05 -> 8.812105807010084e-05 => diff= [-0.00000206%]
Py:diff-root INFO 000.InDetForwardTrackParticlesAux.2.standardDeviationOfChi2OS 'A' -> '!' => diff= [N/A]
Py:diff-root INFO 000.InDetLargeD0TrackParticlesAux.330.qOverP -0.00038124711136333644 -> -0.0003812477516476065 => diff= [-0.00004199%]
Py:diff-root INFO 000.InDetLargeD0TrackParticlesAux.definingParametersCovMatrixDiag.0.330 0.1922348141670227 -> 0.19223608076572418 => diff= [-0.00016472%]
Py:diff-root INFO 000.InDetLargeD0TrackParticlesAux.definingParametersCovMatrixOffDiag.0.330 0.6220205426216125 -> 0.6220209002494812 => diff= [-0.00001437%]
Py:diff-root INFO 000.InDetLargeD0TrackParticlesAux.330.chiSquared 89.23895263671875 -> 89.23896026611328 => diff= [-0.00000214%]
Py:diff-root INFO 000.InDetTrackParticlesAux.22.d0 -0.29108744859695435 -> -0.29106953740119934 => diff= [0.00153835%]
Py:diff-root INFO 000.InDetTrackParticlesAux.22.z0 -31.78347396850586 -> -31.783472061157227 => diff= [0.00000150%]
Py:diff-root INFO 000.InDetTrackParticlesAux.22.phi -0.640583872795105 -> -0.6405847668647766 => diff= [-0.00003489%]
Py:diff-root INFO 000.InDetTrackParticlesAux.206.theta 0.3397007882595062 -> 0.33970075845718384 => diff= [0.00000219%]
Py:diff-root INFO 000.InDetTrackParticlesAux.22.qOverP 0.0004895639140158892 -> 0.0004895543679594994 => diff= [0.00048748%]
Py:diff-root INFO 000.InDetTrackParticlesAux.definingParametersCovMatrixDiag.0.22 0.057841114699840546 -> 0.057839393615722656 => diff= [0.00074390%]
Py:diff-root INFO 000.InDetTrackParticlesAux.definingParametersCovMatrixDiag.0.206 0.04129693657159805 -> 0.041296765208244324 => diff= [0.00010374%]
Py:diff-root INFO 000.InDetTrackParticlesAux.definingParametersCovMatrixOffDiag.0.22 0.012589438818395138 -> 0.012590291909873486 => diff= [-0.00169400%]
Py:diff-root INFO 000.InDetTrackParticlesAux.definingParametersCovMatrixOffDiag.0.206 -0.02126721665263176 -> -0.021267127245664597 => diff= [0.00010510%]
Py:diff-root INFO 000.InDetTrackParticlesAux.definingParametersCovMatrixOffDiag.7.790 0.0005897537339478731 -> 0.000589753792155534 => diff= [-0.00000247%]
Py:diff-root INFO 000.InDetTrackParticlesAux.22.chiSquared 22.065128326416016 -> 22.06508445739746 => diff= [0.00004970%]
Py:diff-root INFO 000.InDetTrackParticlesAux.22.eProbabilityComb 0.08699578791856766 -> 0.08699649572372437 => diff= [-0.00020340%]
Py:diff-root INFO 000.InDetTrackParticlesAux.22.eProbabilityHT 0.4067322015762329 -> 0.4067312777042389 => diff= [0.00005679%]
Py:diff-root INFO 000.22.InDetTrackParticlesAuxDyn.TRTdEdx 0.829282283782959 -> 0.8292827010154724 => diff= [-0.00001258%]
Py:diff-root INFO 000.PrimaryVerticesAux.0.chiSquared 237.71218872070312 -> 237.71214294433594 => diff= [0.00000481%]
Py:diff-root INFO 000.PrimaryVerticesAux.5.numberDoF 44.76664733886719 -> 44.76664352416992 => diff= [0.00000213%]
Py:diff-root INFO 000.PrimaryVerticesAux.0.x -0.4937134385108948 -> -0.49371346831321716 => diff= [-0.00000151%]
Py:diff-root INFO 000.PrimaryVerticesAux.covariance.1.0 7.870347644711728e-07 -> 7.870345370974974e-07 => diff= [0.00000722%]
Py:diff-root INFO 000.PrimaryVerticesAux.covariance.1.2 5.103515476889697e-08 -> 5.103516187432433e-08 => diff= [-0.00000348%]
Py:diff-root INFO 000.PrimaryVerticesAux.covariance.2.5 8.140814315993339e-05 -> 8.140813588397577e-05 => diff= [0.00000223%]
Py:diff-root INFO 000.PrimaryVerticesAux.covariance.1.23 -2.1415432911453536e-06 -> -2.141543518519029e-06 => diff= [-0.00000265%]
Py:diff-root INFO 000.PrimaryVerticesAux.covariance.1.40 7.870347644711728e-07 -> 7.870345370974974e-07 => diff= [0.00000722%]
Py:diff-root INFO 000.PrimaryVerticesAux.trackWeights.1.0 0.19020986557006836 -> 0.1902097910642624 => diff= [0.00000979%]
Py:diff-root INFO 000.PrimaryVerticesAux.trackWeights.1.2 0.1038067564368248 -> 0.1038067489862442 => diff= [0.00000179%]
Py:diff-root INFO 000.PrimaryVerticesAux.trackWeights.0.5 0.02166411466896534 -> 0.021664118394255638 => diff= [-0.00000430%]
Py:diff-root INFO 000.PrimaryVerticesAux.trackWeights.22.11 0.24990658462047577 -> 0.24990659952163696 => diff= [-0.00000149%]
Py:diff-root INFO 000.PrimaryVerticesAux.trackWeights.1.23 0.8795447945594788 -> 0.879544734954834 => diff= [0.00000169%]
Py:diff-root INFO 000.PrimaryVerticesAux.trackWeights.9.27 0.002159126801416278 -> 0.0021591265685856342 => diff= [0.00000270%]
Py:diff-root INFO 000.2.PrimaryVerticesAuxDyn.sumPt2 136.55674743652344 -> 136.5567626953125 => diff= [-0.00000279%]
....
Merge request reports
Activity
added InnerDetector Tracking main review-pending-level-1 labels
CI Result FAILURE (hash 34138814)Athena externals cmake make tests Full details available on this CI monitor view. Check the JIRA CI status board for known problems
Athena: number of compilation errors 1, warnings 0
For experts only: Jenkins output [CI-MERGE-REQUEST-EL9 286]Did something similar a while ago, moving from a handwritten matrix inversion to an Eigen version: 80f303b3
There are still some CI issues, could you follow up on them?
Cheers, Philipp (L1)
Edited by Philipp Rinckeadded review-user-action-required label
removed review-pending-level-1 label
added review-pending-level-1 label and removed review-user-action-required label
CI Result FAILURE (hash 9f917f8e)Athena externals cmake make tests Full details available on this CI monitor view. Check the JIRA CI status board for known problems
Athena: number of compilation errors 0, warnings 0
For experts only: Jenkins output [CI-MERGE-REQUEST-EL9 290]added review-user-action-required label
removed review-pending-level-1 label
added RC Attention Required label
Hi @princke the procedure is [https://atlassoftwaredocs.web.cern.ch/guides/release_coordinators/#update-reference-files]
As said in another MR. There is a label offline-sw-review-approved and then the RC needs to do some things mainly update the references.
In theory I can do all steps (since Reco Integration coord) but since this is my code change I prefer to not do it as will be biased. So has to wait.
The idea is not for the dev to do it, but wait for the RC. This mean obviously it might take 1-2 days to be merged even if deemed fine, depending on how busy the RC is etc.
In practice you can review the code changes to see if look fine (in this case tbh is more rm) , but it will still need the extra label and the ref update in due time.
Now, I am not suprised of what changes as in the description you can see I did one check locally ...
Edited by Christos Anastopoulos