I won't dive into the discussion as well, except to say that parallel RNGs have to have specific characteristics, mainly to initialize many RNGs at the same time. I don't know how MRG31k3p handles this, as the publications was not very clear on this aspect. I guess it falls down as the other from that "time" (http://dl.acm.org/citation.cfm?id=1276928). BTW, Random123 works also on GPU and can use intrinsics to be also faster than usual congruent RNGs (see http://www.thesalmons.org/john/random123/papers/random123sc11.pdf table 2).
Matthieu 2014-02-18 16:00 GMT+00:00 Frédéric Bastien <no...@nouiz.org>: > I won't go in the discussion of which RNG is better for some problems. > I'll just tell why we pick this one. > > We needed a parallel RNG and we wanted to use the same RNG on CPU and > on GPU. We discussed with a professor in our department that is well > know in that field(Pierre L'Ecuyer) and he recommanded this one for > our problem. For the GPU, we don't want an rng that have too much > register too. > > Robert K. commented that this would need refactoring of numpy.random > and then it would be easy to have many rng. > > Fred > > On Tue, Feb 18, 2014 at 10:56 AM, Matthieu Brucher > <matthieu.bruc...@gmail.com> wrote: >> Hi, >> >> The main issue with PRNG and MT is that you don't know how to >> initialize all MT generators properly. A hash-based PRNG is much more >> efficient in that regard (see Random123 for a more detailed >> explanation). >> >From what I heard, if MT is indeed chosen for RNG in numerical world, >> in parallel world, it is not as obvious because of this pitfall. >> >> Cheers, >> >> Matthieu >> >> 2014-02-18 15:50 GMT+00:00 Sturla Molden <sturla.mol...@gmail.com>: >>> AFAIK, CMRG (MRG31k3p) is more equidistributed than Mersenne Twister, but >>> the period is much shorter. However, MT is getting acceptance as the PRNG >>> of choice for numerical work. And when we are doing stochastic simulations >>> in Python, the speed of the PRNG is unlikely to be the bottleneck. >>> >>> Sturla >>> >>> >>> Frédéric Bastien <no...@nouiz.org> wrote: >>>> Hi, >>>> >>>> In a ticket I did a coment and Charles suggested that I post it here: >>>> >>>> In Theano we have an C implementation of a faster RNG: MRG31k3p. It is >>>> faster on CPU, and we have a GPU implementation. It would be >>>> relatively easy to parallize on the CPU with OpenMP. >>>> >>>> If someone is interested to port this to numpy, their wouldn't be any >>>> dependency problem. No license problem as Theano license have the same >>>> license as NumPy. >>>> >>>> The speed difference is significant, but I don't recall numbers. >>>> >>>> Fred >>> >>> _______________________________________________ >>> NumPy-Discussion mailing list >>> NumPy-Discussion@scipy.org >>> http://mail.scipy.org/mailman/listinfo/numpy-discussion >> >> >> >> -- >> Information System Engineer, Ph.D. >> Blog: http://matt.eifelle.com >> LinkedIn: http://www.linkedin.com/in/matthieubrucher >> Music band: http://liliejay.com/ >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@scipy.org >> http://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion -- Information System Engineer, Ph.D. Blog: http://matt.eifelle.com LinkedIn: http://www.linkedin.com/in/matthieubrucher Music band: http://liliejay.com/ _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion