Speaker
Andrei Gheata
(CERN)
Description
Among the components contributing to particle transport, geometry navigation is an important consumer of CPU cycles. The tasks performed to get answers to "basic" queries like locating a point within a geometry hierarchy or computing accurately the distance to the next boundary can become very computing intensive for complex detector setups. Among several optimization methods already in use by the existing geometry algorithms, like caching or solution finding based on topological constraints, the usage of modern processors SIMD capabilities is maybe the least explored. While the potential gain by vectorizing loops is important and the technology trends push for larger vector units and more CPU pipes, applying this technology to the highly hierarchical multiple branched geometry code is a difficult challenge. The techniques used for producing vectorized code range from simple transformations allowing for compiler auto-vectorization to usage of intrinsic SIMD instructions or external helper libraries.
The work done to vectorize an important part of the critical navigation algorithms in ROOT geometry will be described, as well as a detailed benchmark of the benefits. We describe from a critical point of view the different techniques that were used. We comment on the estimated efforts to extend this work to the full geometry, as well as the large potential gains coming from using a vector geometry navigator as client of a future vector-based particle transport engine.
Author
Andrei Gheata
(CERN)