OpenRAND: A Performance Portable, Reproducible Random Number Generation Library for Parallel Computations
We introduce OpenRAND, a C++17 library aimed at facilitating reproducible scientific research through the generation of statistically robust and yet replicable random numbers. OpenRAND accommodates single and multi-threaded applications on CPUs and GPUs and offers a simplified, user-friendly API tha...
Gespeichert in:
Hauptverfasser: | , , , |
---|---|
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext bestellen |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | We introduce OpenRAND, a C++17 library aimed at facilitating reproducible
scientific research through the generation of statistically robust and yet
replicable random numbers. OpenRAND accommodates single and multi-threaded
applications on CPUs and GPUs and offers a simplified, user-friendly API that
complies with the C++ standard's random number engine interface. It is
portable: it functions seamlessly as a lightweight, header-only library, making
it adaptable to a wide spectrum of software and hardware platforms. It is
statistically robust: a suite of built-in tests ensures no pattern exists
within single or multiple streams. Despite the simplicity and portability, it
is remarkably performant-matching and sometimes even outperforming native
libraries by a significant margin. Our tests, including a Brownian walk
simulation, affirm its reproducibility and highlight its computational
efficiency, outperforming CUDA's cuRAND by up to 1.8 times. |
---|---|
DOI: | 10.48550/arxiv.2310.19925 |