Updated the readme.

This commit is contained in:
Peter Pettersson 2013-04-22 21:42:15 +02:00
parent e22f454f7c
commit 9bc9b50bb0
1 changed files with 44 additions and 7 deletions

View File

@ -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.