Algorithm 806: SPRNG
SPRNG (Scalable Pseudorandom Number Generators) offers a robust, high-performance library designed for pseudorandom number generation in parallel processing environments. It addresses common issues faced by traditional libraries, such as inefficiency and high interprocess correlation, making it ideal for Monte Carlo simulations and other applications requiring large-scale randomness. With its modular architecture, SPRNG facilitates easy parameterization and reproducibility, while ensuring uniform distribution across generated streams. Explore its comprehensive test suites and integration capabilities for C, C++, MPI, and FORTRAN.
Algorithm 806: SPRNG
E N D
Presentation Transcript
Algorithm 806: SPRNG A scalable Library for pseudorandom number generation
About: Pseudo-random Libraries • Many Libraries • Parameterization – based libraries • Erroneous => Real world applications • New Library – SPRNG • Purpose of SPRNG ?
Introduction • Problems: • Erroneous => Monte Carlo Applications • High Performance Cycles • Parallelism – More Complicates • Solution: • SPRNG – Scalable and Distributed Architecture
PARALLEL Pseudorandom-number generation • Methods - Parameterization • Linear Congruential Generators: • Commonly used generator • Linear Recursion : • Periodic Sequence
Prime modulus • ‘m’ is prime • Determine family of a’s • Obtain Maximal period • ‘i ’ relatively prime to Produce Primitive element ‘j’: PROBLEM: Overall efficiency of PPRNG ? • Cost of Computing or • cost of modular multiplication
Exponential Sum: • Full period • Partially period • Upper Bounds: Equidistributed • Parallel: • Exponential Sum Correlation is :
Upper Bound: • Open Questions: • Choosing ‘m’ ? A. Fast modular multiplication or fast calculation of jth integer • Good intrastream correlation also ensure good intrastream independence to performance ? • Hence Such techniques are less attractive for parallel Pseudo random number generation.
Lagged- Fibonacci Generator • Previous: Varying parameters - recursion • Now: Parameterized – Initial Value • ALFG Equation: • Popular : Serial and Scalable Parallel Machines • Reasons: • 1. Easy to implement • 2. Cheap to compute • It does well on statistical tests
Maximal Period : • Template :
O(K*K) Template : • Advantage: • Optimal Disadvantage : No proof and improvement of this analytical is open challenge
Advantage: Good for Floating point • However, care must be taken to maintain the uniqueness of the parallel streams
SPRNG • Random Number streams to parallel processes • Advantages: • 1. Several, Distinct, Well tested, Scalable PRNGs • 2. Initailization without Inter process communication • 3. Reproducibility • 4. Minimization of Interprocesscorrealtion • 5. Uniformity • 6. Integrated Test Suites • 7. Extensibility
Generators • Additive lagged Fibonacci • Multiplicative Lagged Fibonacci • Prime Modules Multiplicative Congruential • Power-of-two modules linear Congruential • Combined Multiplicative Recursive generator
Examples • Download: • http://sprng.cs.fsu.edu • Definition: init_sprng routine • int *init_sprng(int streamnum, int nstreams, int seed, int param)
#include <cstdio> • #define SIMPLE_SPRNG /* simple interface */ • #include "sprng.h" /* SPRNG header file */ • using namespace std; • int main() • { • double rn; • int i; • printf(" Printing 3 random numbers in [0,1):\n"); • for (i=0;i<3;i++) • { • rn = sprng(); /* generate double precision random number */ • printf("%f\n",rn); • } • return 0; • }
Execution • $> ./simple-simple • Printing 3 random numbers in [0,1): • 0.014267 • 0.749392 • 0.007316
SPRNG TEST SUITE • Intrastream Correlation • Interstream Correlation • Statistical Test
Example: • test.lib nstreamsncombine seed paramnblocks skip • Ex: eqi-distance.lcg 4 2 0 0 3 1 2 100 • mpirun -np 2 equidistnce.lcg 4 2 0 0 3 1 2 100 • Result: • mpirun -np 2 eqidist.lcg 4 2 0 0 3 1 2 1 00 • eqidistance.lcg 4 2 0 0 3 1 2 100 • KS value : 0.601252 • KS value prob : 17.50 • Hence, It is b/w 2.5% and 97.5% It is passed
There are different tests that are described by Knuth are described in SPRNG library such as • Collision tests • Coupons Collector tests • Equidistance tests • Gap test • Permutation tests • Poker tests • Serial test
Physically Based Tests: • Ising Model : • Random Walk Test:
CONCLUSION • Comprehensive Library • Recursions are simple • Reusable • Extensibility • Uniformity : C, C++, MPI and FORTRAN
REFERENCES • http://sprng.cs.fsu.edu • http://www.naadsm.org/opensource/sprng • http://www.cs.sunysb.edu/~algorith/implement/sprng/implement.shtml • https://computing.llnl.gov/LCdocs/math/index.jsp?show=s4.6 • http://www.berniepope.id.au/sprng.html