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...

Full description

Bibliographic Details
Main Authors: Hahnfeld Jonas, Moneta Lorenzo
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