Vectorisation of Jacobian update in Runge Kutta
This MR collects work by @christos @amorley and @ssnyder who vectorised an important piece of the Runge-Kutta, in form of the Jacobian update, in the context of our tracking code.
As this algebra is in fact currently implemented in two independent locations InDetTrajectoryElement_xk
and RungeKuttaPropagator
- we create a common header providing an inlined implementation that can be used by both.
As this is performance-critical code, we have kept changes to the interface minimal, to avoid any unnecessary overhead.
Benchmarking indicates the Jacobian update will be sped up by O(30%) by this MR. Compared to total tracking, we are expecting to stay within percent-level CPU, but this is a first step towards a wider vectorisation effort.
Edited by Maximilian Emanuel Goblirsch-Kolb