https://doi.org/10.1051/epjconf/202429503020
Investigating mixed-precision for AGATA pulse-shape analysis
1 Université Paris-Saclay, CNRS/IN2P3, IJCLab, 91405 Orsay, France
2 Sorbonne Université, CNRS, LIP6, Paris, 75005, France
3 Université Paris-Panthéon-Assas, Paris, 75006, France
* e-mail: romeo.molina@ijclab.in2p3.fr
* e-mail: vincent.lafage@ijclab.in2p3.fr
* e-mail: david.chamont@ijclab.in2p3.fr
* e-mail: fabienne.jezequel@lip6.fr
Published online: 6 May 2024
The AGATA project aims at building a 4π gamma-ray spectrometer consisting of 180 germanium crystals, each crystal being divided into 36 segments. Each gamma ray produces an electrical signal within several neighbouring segments, which is compared with a data base of reference signals, enabling to locate the interaction. This step is called Pulse-Shape Analysis (PSA). In the execution chain leading to the PSA, we observe successive data conversions: the original 14-bit integers given by the electronics are finally converted to 32-bit floats. This made us wonder about the real numerical accuracy of the results, and investigate the use of shorter floats, with the hope to speedup the computation, and also reduce a major cache-miss problem. In this article, we first describe the numerical validation of the PSA code, thanks to the CADNA library. After the code being properly instrumented, CADNA performs each computation three times with a random rounding mode. This allows, for each operation, to evaluate the number of exact significant digits using a Student test with 95% confidence threshold. In a second step, we report our successes and challenges while refactoring the code so to mix different numerical formats, using high precision only when necessary, and taking benefit of hardware speedup elsewhere.
© The Authors, published by EDP Sciences, 2024
This is an Open Access article distributed under the terms of the Creative Commons Attribution License 4.0, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.