Abstract

This document is devoted to the description of advances in the generation of high-quality random numbers for CORSIKA 8, which is being developed in modern C++17 and is designed to run on modern multi-thread processors and accelerators. CORSIKA 8 is a Monte Carlo simulation framework to model ultra-high energy secondary particle cascades in astroparticle physics. The aspects associated with the generation of high-quality random numbers on massively parallel platforms, like multi-core CPUs and GPUs, are reviewed and the deployment of counter-based engines using an innovative and multi-thread friendly API are described. The API is based on iterators providing a very well known access mechanism in C++, and also supports lazy evaluation. Moreover, an upgraded version of the Squares algorithm with highly efficient internal 128 as well as 256 bit counters is presented in this context. Performance measurements are provided, as well as comparisons with conventional designs are given. Finally, the integration into CORSIKA 8 is commented.

Highlights

  • CORSIKA 8 is a new framework [1] for the modelling of extensive air showers in astroparticle physics

  • The properties of the counter-based pseudorandom number generators” (CBPRNGs) added to CORSIKA 8 are discussed in sections 2.1 to 2.3

  • Philox is probably the most popular CBPRNG and implementations are available on CPUs, and as well on GPUs via nVidia’s cuRAND library

Read more

Summary

Introduction

CORSIKA 8 is a new framework [1] for the modelling of extensive air showers in astroparticle physics. For the conventional PRNGs, the statistical properties of the generated numbers are strongly dependent on the function f and of the size of the state, typically measured in number of bits. To obtain numbers with good statistical properties, large states and complicated functions are necessary. Such generators are deployed in parallel calculations following two basic approaches. In the second approach, referred to as substream, one would initialize the instances with the same parameters and setup each of them to different and far-away (hopefully) detached states, skipping the intermediate ones.

Counter-based pseudorandom number generators
Cipher-based generators
Non-cryptographic bijection transformation generators
Middle-square transformation generators
Iterator-based API for parallelism
Statistical tests
Performance
Integration into CORSIKA 8
Conclusion
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call