Updated the readme.
This commit is contained in:
parent
e22f454f7c
commit
9bc9b50bb0
51
readme.txt
51
readme.txt
|
@ -1,14 +1,51 @@
|
||||||
A SIMD optimized version of the WELL512a random algorithm.
|
A SIMD optimized version of the WELL512a random algorithm.
|
||||||
|
|
||||||
For a detailed description of how the algorithm works, please see the following pages:
|
|
||||||
|
=== OVERVIEW ===
|
||||||
|
|
||||||
|
WELL512a is a pseudorandom number generator algorithm developed by
|
||||||
|
F. Panneton, P. L'Ecuyer and M. Matsumoto.
|
||||||
|
|
||||||
|
This is a fast implementation of that algorithm in C++ using SSE2 intrinsics
|
||||||
|
for the x86 / x64 platform.
|
||||||
|
|
||||||
|
For a detailed description of how the algorithm works, please see the
|
||||||
|
following pages:
|
||||||
1) http://en.wikipedia.org/wiki/Well_equidistributed_long-period_linear
|
1) http://en.wikipedia.org/wiki/Well_equidistributed_long-period_linear
|
||||||
2) http://www.iro.umontreal.ca/~panneton/WELLRNG.html
|
2) http://www.iro.umontreal.ca/~panneton/WELLRNG.html
|
||||||
|
|
||||||
Benchmarking shows that the SSE2 implementation is generally about 2-3 times faster than
|
|
||||||
the C implementation by the original authors.
|
|
||||||
|
|
||||||
It requires a SSE2 capable CPU (i.e. Intel Pentium 4 or newer, AMD Athlon 64 or newer).
|
=== PERFORMANCE ===
|
||||||
|
|
||||||
All the source code except WELL512a.cpp|h that contains the original implementation
|
This implementation is generally about 2-3 times faster than the C
|
||||||
are released under the BSD license which allows you to include this in any open
|
implementation by the original authors.
|
||||||
or closed source project.
|
|
||||||
|
Some example numbers from the included test program run on an Intel Core
|
||||||
|
i7-3770K 3.5GHz:
|
||||||
|
|
||||||
|
VS2012 gcc 4.6.3
|
||||||
|
C++ SSE2 0.078
|
||||||
|
Original C 0.223
|
||||||
|
-------------------------------------
|
||||||
|
x2.86
|
||||||
|
|
||||||
|
|
||||||
|
=== REQUIREMENTS ===
|
||||||
|
|
||||||
|
An SSE2 capable CPU (i.e. AMD Athlon 64, Intel Pentium 4 or newer.
|
||||||
|
|
||||||
|
It's been tested with Visual Studio 2012 and gcc 4.6.3 but should compile
|
||||||
|
and run on other compilers as well.
|
||||||
|
|
||||||
|
|
||||||
|
=== LICENSE ===
|
||||||
|
|
||||||
|
All the source code, except WELL512a.cpp|h that contains the original
|
||||||
|
implementation, are released under the Simplified BSD license which allows
|
||||||
|
you to use this code in any open or closed source project.
|
||||||
|
|
||||||
|
|
||||||
|
=== ACKNOWLEDGEMENTS ===
|
||||||
|
|
||||||
|
Thanks to Marcus Geelnard for code review and many suggestions for
|
||||||
|
improvements.
|
||||||
|
|
Loading…
Reference in New Issue