Author:
Joube Sylvain,Grasland Hadrien,Chamont David,Falcou Joël
Abstract
C++ is a vital part of particle physics as it allows for high level abstractions while offering state of the art performance. In this article we will first introduce the C++ 20 concepts, a major C++ usability enhancement. We will then introduce Kiwaku, a new multidimensional arrays library taking advantage of the most advanced C++ features at the time of writing, providing the user with intuitive API while retaining state of the art performance. Multidimensional arrays are a basic building block for many scientific experiments and simulations, and particle physics is no exception. Using examples borrowed from Covfie and ACTS libraries, and using data from the ATLAS CERN experiment, we will show how Kiwaku offers good usability while having a negligible impact on performance compared to using classic C++ std::arrays.
Reference27 articles.
1. Czarnecki K., Eisenecker U., Glück R., Vandevoorde D., Veldhuizen T., Generative Programming and Active Libraries, in Generic Programming, edited by Jazayeri M., Loos R.G.K., Musser D.R. (Springer, Berlin, Heidelberg, 2000), Lecture Notes in Computer Science, pp. 25–39, ISBN 978-3-540-39953-7
2. Masliah I., Baboulin M., Falcou J., Meta-Programming and Multi-stage Programming for GPGPUs, in 10th IEEE International Symposium on Embedded Multicore/Manycore Systems-on-Chip (MCSOC 2016) (2016), p. 369
3. Falcou J., Kiwaku github repository, https://github.com/jfalcou/kiwaku
4. Pennycook S.J., Sewall J.D., Lee V.W., A metric for performance portability (2016), 1611.07409
5. A Common Tracking Software Project