SPRNG and Modern Architectures
The Scalable Parallel Random Number Generators (SPRNG) Library and Modern Computer Architectures
- Prof. Michael Mascagni
The Scalable Parallel Random Number Generators (SPRNG) Library and - - PowerPoint PPT Presentation
SPRNG and Modern Architectures The Scalable Parallel Random Number Generators (SPRNG) Library and Modern Computer Architectures Prof. Michael Mascagni Department of Computer Science Department of Mathematics Department of Scientific Computing
SPRNG and Modern Architectures
SPRNG and Modern Architectures
SPRNG and Modern Architectures
SPRNG and Modern Architectures
SPRNG and Modern Architectures
SPRNG and Modern Architectures Types of random numbers and Monte Carlo Methods
◮ Subject to known and unknown sources of error ◮ Should be reproducible by peers ◮ Should be easy to run anew with results that can be
◮ Programming/science errors under your control ◮ Make possible RNG errors approachable
◮ Must be able to rerun a calculation with the same numbers ◮ Across different machines (modulo arithmetic issues) ◮ Parallel and distributed computers?
SPRNG and Modern Architectures Types of random numbers and Monte Carlo Methods
◮ Simulation: use random numbers to “randomly pick" event
◮ Statistics: use random numbers to generate data with a
◮ Numerical quadrature “all Monte Carlo is integration" ◮ Quantum mechanics: Solving Schrödinger’s equation with
◮ Mathematics: Using the Feynman-Kac/path integral
◮ Defense: neutronics, nuclear weapons design ◮ Finance: options, mortgage-backed securities
SPRNG and Modern Architectures Types of random numbers and Monte Carlo Methods
◮ “Real" random numbers: uses a ‘physical source’ of
◮ Pseudorandom numbers: deterministic sequence that
◮ Quasirandom numbers: well distributed (low discrepancy)
Cryptographic numbers Pseudorandom numbers Quasirandom numbers Uniformity Unpredictability Independence
SPRNG and Modern Architectures Pseudorandom number generation Types of pseudorandom numbers
2 ) in Monte Carlo
SPRNG and Modern Architectures Pseudorandom number generation Properties of these pseudorandom numbers
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
◮ Assume {xn} has Per(xn) ◮ Has the fast-leap ahead property: leaping L ahead costs no
◮ First block: {x0, x1, . . . , xL−1} ◮ Second : {xL, xL+1, . . . , x2L−1} ◮ ith block: {x(i−1)L, x(i−1)L+1, . . . , xiL−1}
◮ First block: {x0, xℓ, x2ℓ, . . . , x(L−1)ℓ} ◮ Second block: {x1, x1+ℓ, x1+2ℓ, . . . , x1+(L−1)ℓ} ◮ ith block: {xi, xi+ℓ, xi+2ℓ, . . . , xi+(L−1)ℓ}
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
◮ Define a right and left generator: R(x) and L(x) ◮ The right generator is used within a process ◮ The left generator is used to spawn a new PRNG stream ◮ Note: L(x) = RW(x) for some W for all x for an LCG ◮ Thus, spawning is just jumping a fixed, W, amount in the
◮ First split leap ahead:
2
2l+1
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
◮ It usually costs O(log2(Per(xi))) bit operations to generate
◮ For parallel use, a given computation that requires L
◮ Rule of thumb: never use more than
◮ Thus cost per random number is not constant with number
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
◮ Certain offsets within any modular recursion will lead to
◮ Splitting in any way converts auto-correlations to
◮ Therefore, splitting generically leads to interprocessor
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
◮ Very efficient: 1 add & pointer update/number ◮ Good empirical quality ◮ Very easy to produce distinct parallel streams
◮ Choice: Prime modulus (quality considerations) ◮ Parameterize the multiplier ◮ Less efficient than lagged-Fibonacci ◮ Provably good quality ◮ Multiprecise arithmetic in initialization
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
◮ Choice: Power-of-two modulus (efficiency considerations) ◮ Parameterize the prime additive constant ◮ Less efficient than lagged-Fibonacci ◮ Provably good quality ◮ Must compute as many primes as streams
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
◮ yn = yn−s + yn−r (mod 2) ◮ zn = zn−s + zn−r (mod 2k−2)
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
◮ Use a parallel queue to hold unfinished work ◮ Each processor follows a distinct neutron ◮ Fission event places a new neutron(s) in queue with initial
◮ Reproducibility: each neutron is queued with a new
◮ Using the binary tree mapping prevents generator reuse,
◮ A global seed reorders the generators to obtain a
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
◮ Each unique parameter value gives an “independent”
◮ Each stream is uniquely numbered ◮ Numbering allows for absolute reproducibility, even with
◮ Effective serial implementation + enumeration yield a
◮ Provides theoretical testing basis
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
◮ Generators mapped canonically to a binary tree ◮ Extended seed data structure contains current seed and
◮ Spawning uses new next generator as starting point:
SPRNG and Modern Architectures Pseudorandom number generation Parallelization of pseudorandom number generators
◮ An application exists that stumbles on a given generator ◮ Generators based on different recursions allow comparison
◮ Makes the generators real experimental tools
◮ Initialization returns a pointer to the generator state:
◮ Single call for new random number: SPRNG() ◮ Generator type chosen with parameters in init_SPRNG() ◮ Makes changing generator very easy ◮ Can use more than one generator type in code ◮ Parallel structure is extensible to new generators through
SPRNG and Modern Architectures Pseudorandom number generation New directions for SPRNG
SPRNG and Modern Architectures Pseudorandom number generation New directions for SPRNG
SPRNG and Modern Architectures Pseudorandom number generation New directions for SPRNG
SPRNG and Modern Architectures Pseudorandom number generation New directions for SPRNG
SPRNG and Modern Architectures Quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation The Koksma-Hlawka inequality
SPRNG and Modern Architectures Quasirandom number generation Discrepancy
s−1 2 )
◮ Sequence: D∗
N ≤ O(N−1(log N)s−1)
◮ Point set: D∗
N ≤ O(N−1(log N)s−2)
SPRNG and Modern Architectures Quasirandom number generation The van der Corput sequence
SPRNG and Modern Architectures Quasirandom number generation The van der Corput sequence
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
◮ Method of good lattice points (Sloan and Joe) ◮ Sobo´
◮ Faure sequences (more later) ◮ Niederreiter sequences
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
◮ Define the ith ℓ-bit “direction number” as: vi = 2i (think of
◮ Represent n − 1 via its base-2 representation
◮ Thus we have
i=ℓ−1
◮ Use recursions with a primitive binary polynomial define the
◮ The Sobo´
i=ℓ−1
◮ Use Gray-code ordering for speed
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
i=1 di
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Methods of quasirandom number generation
SPRNG and Modern Architectures Quasirandom number generation Randomization
◮ p > s is prime ◮ C(j−1) is the generator matrix for dimension 1 ≤ j ≤ s ◮ For Faure C(j) = Pj−1 is the Pascal matrix:
r,k =
k−1
SPRNG and Modern Architectures Quasirandom number generation Randomization
SPRNG and Modern Architectures Quasirandom number generation Randomization
SPRNG and Modern Architectures Quasirandom number generation Randomization
◮ xn ∈ [0, 1]s is the original QRN ◮ r ∈ [0, 1]s is a random point ◮ zn ∈ [0, 1]s scrambled point
◮ Nested scrambling (Owen) ◮ Single digit scrambling like linear scrambling
SPRNG and Modern Architectures Quasirandom number generation Randomization
◮ Must make the family small enough to exhaust over, so one
◮ The must be a quality criterion that is indicative and cheap
SPRNG and Modern Architectures Quasirandom number generation Randomization
SPRNG and Modern Architectures Quasirandom number generation Randomization
SPRNG and Modern Architectures Quasirandom number generation Randomization
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 0.02 0.04 0.06 0.08 0.1 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1
SPRNG and Modern Architectures Conclusions and Future Work
◮ Base SPRNG in C++ ◮ Module for MPI ◮ Module for Fortran users ◮ Testing module
◮ Spawn-intensive/small-memory footprint generators:
◮ “QPRNG” ◮ Update test suite with TestU01
SPRNG and Modern Architectures Conclusions and Future Work
SPRNG and Modern Architectures Conclusions and Future Work
SPRNG and Modern Architectures Conclusions and Future Work