I’m currently investigating peusdo random number generators for use with particularly large numbers of parallel streams.
The Mersenne Twister appears to be the best available and the adaptation of Matsumoto’s MTGP in the CUDA SDK examples seems to work well for 4096 different parallel streams.
However, I need one that can feasibly generate up to 10 million streams of parallel numbers or more and I’m concerned about the memory usage required to store all of the parameters for each stream. I don’t need the most accurate generator though and I don’t even necessarily need the streams to use different characteristic polynomials as produced by the dynamic creator for MTGP. I have been considering the Park-Miller PRNG, as the memory requirements would be much less, however the relatively short period compared to the Mersenne Twister does put me off (and I understand the base implementation of the MT to be faster).
I’d be interested in any discussion comparing these two algorithms or any others I’ve yet to consider.
My main requirements are a very high number of independent streams, repeatability (based on a single initial seed spawning all other streams), low memory usage (ie one integer per stream at most). Finally a high period would of course be desirable. Any suggestions?