The CLUSTERTECH Parallel Random Number Generator (CT-PRNG) is based on Mersenne Twister, which has period 219937 - 1. Using a jump-ahead algorithm, CT-PRNG generates multiple independent streams of random numbers simultaneously across one or more GPUs.
For many parallel RNGs, a user has to provide distinct seeds for initialisation. Since there is no guarantee on the distance between the starting positions, parallel streams may overlap after a short period of time (e.g., minutes) [left figure].
From a single user-supplied seed, our implementation calculates the starting position of each stream by means of a fast jump-ahead algorithm. This guarantees that any two adjacent starting positions are separated by D random numbers. When D is large, say, 2100, these streams will never overlap in any practical time frame [right figure].
Currently, CT-PRNG supports uniform, Bernoulli, geometric, exponential, normal and lognormal distributions.
1.6.1