OpenRAND
0.9
OpenRAND: A C++ Library for Reproducible Random Number Generation in Parallel Computing Environments
|
OpenRAND generators has been tested with two statistical suites: TestU01 and PractRand.
There are two ways to test the generators:
N
random number generators.C
random numbers from each generator.N*C
.N*C
at each iteration as long as necessary.In this document, our primary focus is on parallel streams, as single streams are already well-examined in existing literature. For the results discussed here, we've set N at 100 and C at 3.
Practrand can consume practically infinite amount of data. Given that each stream contains 2^32 numbers, and each number is 4 bytes (2^2), with 100 streams (or 2^6.64), the combined buffer is little over 2^40 bytes long. Put another way, we shouldn't expect to see any failures in Practrand before reaching the 2^40 bytes (1-terabyte) mark.
None of the generators failed this test. For detailed output from the practrand suite for for each generator, see: practrandm_[tyche|squares|threefry|Philox].txt.
Testu01 has 3 batteries of tests: SmallCrush, Crush, and BigCrush. BigCrush is the most comprehensive one with a total of 106 tests, and is the one we use.
Some generators do fail one or two BigCRush tests. For example, this is the output from Philox:
This is not unusual on some runs, authors of curand also observed some failures on Bigcrush. It also depends on the configuration we used.
For detailed output from Bigcrush suite, see testu01m_[tyche|squares|threefry|Philox].txt.