Parallel Computation Support
- 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.
- 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
Note: Currently skip-ahead and leap-frog methods are supported by the rand0, rand, mcg31m1, and mcg59 engines. The skip-ahead and leap-frog methods of splitting a stream are not yet implemented for the.
mt19937naturally provides parallel support during initialization. See the MT19937 section of the Notes for Intel® MKL Vector Statistic document listed in the introduction.