Parallel Computation Support
One of the basic requirements for the random number sequences generated by the engines is their mutual independence and lack of inter-correlation. Even if you want random number samplings to be correlated, such correlation should be controllable. The Short Vector Random Number Generator (SVRNG) library provides two techniques: "skip-ahead" and "leap-frog".
- The skip-ahead method splits the original sequence intoknon-overlapping blocks, wherekis the number of independent sequences. Each of the sequences generates random numbers only from the corresponding block of contiguous random numbers.
- The leap-frog method splits the original sequence intokdisjoint subsequences in such a way that the first stream would generate the random numbers x1, xk+1, x2k+1, x3k+1, ..., the second stream would generate the random numbers x2, xk+2, x2k+2, x3k+2, ..., and, finally, thek-th stream would generate the random numbers xk, x2k, x3k, .... The multi-dimensional uniformity properties of each subsequence deteriorate seriously askgrows so this method is only useful ifkis less than about 25.
The following sequence outlines the typical usage model for creating independent sequences of random numbers in a parallel computation environment:
- Create the original engine
- Create a copy of the original engine in each thread
- Apply one of techniques above to re-initialize the individual engines to provide an independent sequence on each thread
For detailed information on the use of SVRNG intrinsics in a parallel computation environment see the "Random Streams and RNGs in Parallel Computation" section of the
Notes for Intel® MKL Vector Statisticdocument listed in the introduction..