Notes for Intel® oneAPI Math Kernel Library Vector Statistics

ID 772987
Date 12/04/2020
Public
Document Table of Contents

MT2203

This is a set of 6024 Mersenne Twister pseudorandom number generators (j = 1, ..., 6024):

,

,

,

,

,

,

.

Matrix Aj(32x32) has the following format:

,

with the 32-bit vector aj = a31,j ... a0,j.

The set of 6024 basic pseudorandom number generators MT2203 is a natural addition to MT19937 generator. MT2203 generators are intended for use in large scale Monte Carlo simulations performed on multi-processor computer systems. These generators possess a smaller period length but the number of 22203 to the method described in [Matsum2000].

Real Implementation (Single and Double Precision)

The output vector is the sequence of the floating-point values u0, u1, ... .

Integer Implementation

The output vector of 32-bit integers y0,j, y1,j, ... .

Stream Initialization by Function vslNewStream

MT2203 generates the stream and initializes it specifying the input 32-bit unsigned integer parameter seed. The stream state, that is, the array of 69 32-bit integers x0, ..., x68, is initialized by the procedure described in [MT2002] and based on the seed value.

MT2203 generator is a set of 6024 basic generators. To select an MT2203 generator, add an offset to the named constant VSL_BRNG_MT2203, for example, VSL_BRNG_MT2203+0, VSL_BRNG_ MT2203+1, ... . The following example illustrates the initialization of the 10th (of 6024) MT2203 generator:

vslNewStream (&stream, VSL_BRNG_MT2203+9, seed);

Stream Initialization of Function vslNewStreamEx

MT2203 generates the stream and initializes it specifying the array params[] of n 32-bit unsigned integers:

  1. If n ≥ 1, perform initialization as described in [MT2002] using array params[]on input.

  2. If n = 0, assume params[0] = 1, n = 1 and perform initialization as described in the previous item.

Subsequences Selection Methods

vslSkipAheadStream
Not supported
vslSkipAheadStreamEx
Not supported
vslLeapfrogStream
Not supported

Generator Period

Empirical Testing Results Summary

Test Name
vsRngUniform
vdRngUniform
viRngUniform
viRngUniformBits
3D Spheres Test OK (20% errors) OK (20% errors) Not applicable OK (20% errors)
Birthday Spacing Test Not applicable Not applicable Not applicable OK (0% errors)
Bitstream Test Not applicable Not applicable Not applicable OK (15% errors)
Rank of 31x31 Binary Matrices Test Not applicable Not applicable Not applicable OK (10% errors)
Rank of 32x32 Binary Matrices Test Not applicable Not applicable Not applicable OK (0% errors)
Rank of 6x8 Binary Matrices Test Not applicable Not applicable Not applicable OK (0% errors)
Counts-the-1’s Test (stream of bits) Not applicable Not applicable Not applicable OK (0% errors)
Counts-the-1’s Test (stream of specific bytes) Not applicable Not applicable Not applicable OK (0% errors)
Craps Test OK (20% errors) OK (20% errors) OK (20% errors) OK (20% errors)
Parking Lot Test OK (0% errors) OK (0% errors) Not applicable OK (0% errors)
2D Self-Avoiding Random Walk Test OK (10% errors) OK (0% errors) Not applicable OK (0% errors)
NOTE:
  1. The tabulated data is obtained using the one-level (threshold) testing technique. The OK result indicates FAIL < 50%. The run fails when p-value falls outside the interval [0.05, 0.95].

  2. The stream tested is generated by calling the function vslNewStream with seed=7,777,777.