arXiv · 2310.19925
OpenRAND: A Performance Portable, Reproducible Random Number Generation Library for Parallel Computations
Abstract
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.
Explore related subjects
Keep this discovery
Explore connections, maps & timelines
Shihab Shahriar Khan, Bryce Palmer, Christopher Edelmaierd, Hasan Metin Aktulga. 2023-10-30. OpenRAND: A Performance Portable, Reproducible Random Number Generation Library for Parallel Computations. https://arxiv.org/abs/2310.19925
Cite the original work for its findings. Save a collection to share your selection of sources.