Description: |
PRNGlib: a parallel random number generator library. PRNGlib provides several pseudo-random number generators through a common interface on any Shared or Distributed Memory Parallel architecture. Common routines are speciied to initialize the generators with appropriate seeds on each processor and to generate uniform or (normal, Poisson, exponential) distributed random vectors. We concentrate on those generators which assure high quality (i.e., passing most of the empirical and theoretical tests), have a long period , and can be calculated quickly, also in parallel, i.e., it must be possible to generate the same random sequence independent of the number of processors. This splitting facility implies a method to skip over n pseudo-random numbers without calculating all intermediate values, i.e., an O(log n) algorithm is required. Taking into account these criteria Lagged Fibonacci, Generalized Shift Register, and Mul-tiplicative Linear Congruential generators are implemented with (almost) arbitrary speciications for lags, multipliers, moduli, etc. Furthermore, PRNGlib includes a set of support routines (e.g., buuer I/O), test routines (2 function, Kolmogorov-Smirnov test, etc.) and example programs which are parallelized using the Message Passing Interface (MPI) standard. Both the library and the test suite are easy to extend |