Agner`s CPU blog

Software optimization resources | E-mail subscription to this blog | www.agner.org

Random number generator with vector output
Author:  Date: 2014-10-22 09:22
Have you heard a library called Random123. The paper by the author is at the following link: dl.acm.org/authorize?6509660 which I recall won the best paper at the SC11 conference. The library can be found at www.deshawresearch.com/resources_random123.html

It is a library for parallel random number generating. Unlike conventional PRNG, their generators are based on Cryptographic ideas of using the bijection y_i = f(x_i) where x_i's are only need to be different, such as 1, 2, 3,..., and y_i will appear to be random. All RNG discussed in there paper are Crush resistance (the BigCrush to be specific).

Is there any real advantage of your new library against theirs? The only one I can think of is that some PRNG has a much longer period. Theirs, on the other hand can easily provides 2^256 independent streams, each with 2^256 period, which is more than enough for most situations except the most demanding ones.

Performance-wise, generators in their library usually are ~10cpB on a Haswell CPU. The performance results included in their paper are faster, but were obtained in more idealized situation. I managed to re implement their algorithms and reduced the cpB to ~2 for most algorithms (I was only able to do it after reading your optimization manual, many thanks). In some cases their algorithm can be made to perform even better, < 1cpB (on average), but at the cost of larger space requirement (but the state size of the RNG are still considerably smaller than conventional PRNG such as MT19937).

 
thread Random number generator with vector output new - Agner - 2014-10-17
replythread Random number generator with vector output new - Just_Coder - 2014-10-17
last reply Random number generator with vector output new - Agner - 2014-10-17
last replythread Random number generator with vector output - Yan Zhou - 2014-10-22
last replythread Random number generator with vector output new - Agner - 2014-10-22
last replythread Random number generator with vector output new - Yan Zhou - 2014-10-22
last reply Random number generator with vector output new - Agner - 2014-10-23