A Portable Implementation of RANLUX++
High energy physics has a constant demand for random number generators (RNGs) with high statistical quality. In this paper, we present ROOT’s implementation of the RANLUX++ generator. We discuss the choice of relying only on standard C++ for portability reasons. Building on an initial implementation...
Main Authors: | , |
---|---|
Format: | Article |
Language: | English |
Published: |
EDP Sciences
2021-01-01
|
Series: | EPJ Web of Conferences |
Online Access: | https://www.epj-conferences.org/articles/epjconf/pdf/2021/05/epjconf_chep2021_03008.pdf |
_version_ | 1819068990804197376 |
---|---|
author | Hahnfeld Jonas Moneta Lorenzo |
author_facet | Hahnfeld Jonas Moneta Lorenzo |
author_sort | Hahnfeld Jonas |
collection | DOAJ |
description | High energy physics has a constant demand for random number generators (RNGs) with high statistical quality. In this paper, we present ROOT’s implementation of the RANLUX++ generator. We discuss the choice of relying only on standard C++ for portability reasons. Building on an initial implementation, we describe a set of optimizations to increase generator speed. This allows to reach performance very close to the original assembler version. We test our implementation on an Apple M1 and Nvidia GPUs to demonstrate the advantages of portable code. |
first_indexed | 2024-12-21T16:42:56Z |
format | Article |
id | doaj.art-ededb65b6a484bf7b4370ca82611b3f1 |
institution | Directory Open Access Journal |
issn | 2100-014X |
language | English |
last_indexed | 2024-12-21T16:42:56Z |
publishDate | 2021-01-01 |
publisher | EDP Sciences |
record_format | Article |
series | EPJ Web of Conferences |
spelling | doaj.art-ededb65b6a484bf7b4370ca82611b3f12022-12-21T18:57:03ZengEDP SciencesEPJ Web of Conferences2100-014X2021-01-012510300810.1051/epjconf/202125103008epjconf_chep2021_03008A Portable Implementation of RANLUX++Hahnfeld Jonas0Moneta Lorenzo1CERNCERNHigh energy physics has a constant demand for random number generators (RNGs) with high statistical quality. In this paper, we present ROOT’s implementation of the RANLUX++ generator. We discuss the choice of relying only on standard C++ for portability reasons. Building on an initial implementation, we describe a set of optimizations to increase generator speed. This allows to reach performance very close to the original assembler version. We test our implementation on an Apple M1 and Nvidia GPUs to demonstrate the advantages of portable code.https://www.epj-conferences.org/articles/epjconf/pdf/2021/05/epjconf_chep2021_03008.pdf |
spellingShingle | Hahnfeld Jonas Moneta Lorenzo A Portable Implementation of RANLUX++ EPJ Web of Conferences |
title | A Portable Implementation of RANLUX++ |
title_full | A Portable Implementation of RANLUX++ |
title_fullStr | A Portable Implementation of RANLUX++ |
title_full_unstemmed | A Portable Implementation of RANLUX++ |
title_short | A Portable Implementation of RANLUX++ |
title_sort | portable implementation of ranlux |
url | https://www.epj-conferences.org/articles/epjconf/pdf/2021/05/epjconf_chep2021_03008.pdf |
work_keys_str_mv | AT hahnfeldjonas aportableimplementationofranlux AT monetalorenzo aportableimplementationofranlux AT hahnfeldjonas portableimplementationofranlux AT monetalorenzo portableimplementationofranlux |