Take a look here: https://bashtage.github.io/ng-numpy-randomstate/doc/index.html
On Mon, Apr 3, 2017 at 9:45 AM Jaime Fernández del Río <jaime.f...@gmail.com> wrote: > On Mon, Apr 3, 2017 at 3:20 PM, Pierre Haessig <pierre.haes...@crans.org> > wrote: > > Hello, > Le 30/03/2017 à 13:31, Pierre Haessig a écrit : > > [....] > > But how come Julia is 4-5x faster since Numpy uses C implementation for > the entire process ? (Mersenne Twister -> uniform double -> Box-Muller > transform to get a Gaussian > https://github.com/numpy/numpy/blob/master/numpy/random/mtrand/randomkit.c). > Also I noticed that Julia uses a different algorithm (Ziggurat Method > from Marsaglia and Tsang , > https://github.com/JuliaLang/julia/blob/master/base/random.jl#L700) but > this doesn't explain the difference for uniform rng. > > Any ideas? > > > This > <https://github.com/JuliaLang/julia/blob/7fb758a275a0b4cf0e3f4cbf482c065cb32f0011/doc/src/stdlib/numbers.md#L116> > says > that Julia uses this library > <http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/#dSFMT>, which is > different from the home brewed version of the Mersenne twister in NumPy. > The second link I posted claims their speed comes from generating double > precision numbers directly, rather than generating random bytes that have > to be converted to doubles, as is the case of NumPy through this magical > incantation > <https://github.com/numpy/numpy/blob/master/numpy/random/mtrand/randomkit.c#L514>. > They also throw the SIMD acronym around, which likely means their random > number generation is parallelized. > > My guess is that most of the speed-up comes from the SIMD parallelization: > the Mersenne algorithm does a lot of work > <https://github.com/numpy/numpy/blob/master/numpy/random/mtrand/randomkit.c#L221> > to > produce 32 random bits, so that likely dominates over a couple of > arithmetic operations, even if divisions are involved. > > Jaime > > Do you think Stackoverflow would be a better place for my question? > > best, > > Pierre > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion > > > > > -- > (\__/) > ( O.o) > ( > <) Este es Conejo. Copia a Conejo en tu firma y ayúdale en sus planes > de dominación mundial. > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion