English

OpenRAND: A Performance Portable, Reproducible Random Number Generation Library for Parallel Computations

Distributed, Parallel, and Cluster Computing 2023-11-01 v1

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.

Keywords

Cite

@article{arxiv.2310.19925,
  title  = {OpenRAND: A Performance Portable, Reproducible Random Number Generation Library for Parallel Computations},
  author = {Shihab Shahriar Khan and Bryce Palmer and Christopher Edelmaierd and Hasan Metin Aktulga},
  journal= {arXiv preprint arXiv:2310.19925},
  year   = {2023}
}

Comments

Paper currently under review in Softwarex journal

R2 v1 2026-06-28T13:06:33.775Z