Skip to content

Add support for using other SIMD abstraction layers (ve) in LHCbMath and RICH

Christopher Rob Jones requested to merge jonrob/LHCb:Add-ve-SIMD-support into master

Updates the SIMD type support in LHCbMath to add make it easier to support alternative SIMD abstraction layers, in addition to Vc. This MR uses @mschille 's ve library (https://gitlab.cern.ch/mschille/ve) as an example. Please note though, the work here is as much to lay the ground work to use other libraries in the future (say VecCore) as it is to use ve.

Note that for the moment in this PR I have manually copied for headers from the above repo into LHCbMath. This is just for testing, and the better longer term solution would be to set up the above ve as an external project, similar to how it is now done for SOAContainer etc. I am not sure how to do this, so will need help with this bit (@clemenci ?)

Currently the default setting in LHCbMath is for Vc to remain the abstraction layer that is used. This though is changed with a single using statement, so is trivial to change. ve would right now be a good alternative for ARM builds (which Vc does not support, and flat out does not build with) or perhaps AVX512 builds (where Vc works, but only supports AVX2, so is not fully utilising the machines). With this PR, this could be done in the future, with a single preprocessor check.

Associated MRs for Lbcom and Rec will follow.

Edited by Marco Cattaneo

Merge request reports