Data taking and analyses in high energy physics critically rely on a precise reconstruction of particle trajectories through a detector geometry. Given the amount of data to be processed and the rising combinatorics in future experiments, track finding and fitting tasks need to be implemented as efficiently as possible, making use of state of the art computing hardware. The ACTS project (A Common Tracking Software) provides highly optimized implementations of tracking algorithms written in C++ that are designed to be integrated into the reconstruction software of high energy physics experiments.
A key role in optimizing performance of tracking software is the deployment of hardware based parallelization, which requires an adaptation of the existing code base to the specific technology in certain places. Making heavy use of linear algebra routines throughout the algorithmic code, and given the inherent parallel nature of such computations, it is expected that ACTS will benefit from the integration of a dedicated parallelized implementation in this area.
CPUs are equipped with inbuilt data vectorization capabilities, a form of parallelization that allows to apply a single instruction to multiple data (SIMD). In order to make use of vectorization, special instructions need to be used and further requirements regarding memory layout need to be observed. Multiple library implementations exist which expose a C++ style API and provide a portable solution to deploy explicitly vectorized code for larger projects.
We propose the development of a linear algebra plugin for ACTS, which makes use of explicit vectorization.
Working prototype implementation that contains all necessary operations and performance statement
Interested students please contact Joana (joana.niermann@cern.ch) in case of questions and for an evaluation task.
C++, experience with code optimization/performance tools, such as perf or vtune, and vectorization would be an asset