random_well512a_simd/readme.txt

47 lines
1.4 KiB
Plaintext
Raw Normal View History

2013-04-20 17:56:34 +00:00
A SIMD optimized version of the WELL512a random algorithm.
2013-04-22 19:42:15 +00:00
=== 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:
2013-04-20 17:56:34 +00:00
1) http://en.wikipedia.org/wiki/Well_equidistributed_long-period_linear
2) http://www.iro.umontreal.ca/~panneton/WELLRNG.html
2013-04-22 19:42:15 +00:00
=== PERFORMANCE ===
This implementation is generally about 2-3 times faster than the C
implementation by the original authors.
Some example numbers from the included test program run on an Intel Core
i7-3770K 3.5GHz:
VS2012 gcc 4.6.3
2013-04-22 19:52:57 +00:00
C++ SSE2 0.078 0.07
Original C 0.223 0.19
2013-04-22 19:42:15 +00:00
-------------------------------------
2013-04-22 19:55:46 +00:00
x2.86 x2.71
2013-04-22 19:42:15 +00:00
=== REQUIREMENTS ===
2013-04-22 20:14:28 +00:00
An SSE2 capable CPU (i.e. AMD Athlon 64, Intel Pentium 4 or newer).
2013-04-22 19:42:15 +00:00
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.