OpenRAND: A Performance Portable, Reproducible Random Number Generation Library for Parallel Computations
Dept. of Computer Science, Michigan State University, East Lansing, MI 48824
arXiv:2310.19925 [cs.DC], (30 Oct 2023)
@misc{khan2023openrand,
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},
year={2023},
eprint={2310.19925},
archivePrefix={arXiv},
primaryClass={cs.DC}
}
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.
November 5, 2023 by hgpu