For the implementation of a Monte-Carlo simulation algorithm on a linux cluster we are using the Intel Math Kernel Library.
To obtain different and independent streams on the node of the cluster we use block-skipping or leap-frogging.
In total we need in the order of 10^10 random numbers. We are using the Whichmann-Hill (WH) and MRG32k3a random number generators which have period lengths of 2^80 and 2^191. The period length is therefore large enough.
Since we have in the order of 100 processors, we need to have a block skipping or leapfrogging size which is also in the order of 10^10.
Unsigned 32 bit integers can represent numbers up to ~4*10^9, signed 32bit integers up to half of this, ~2*10^9. The block skipping size is therefore out of reach for 32 bit integers.
The Math Kernel Library's vlsSkipAheadStream function takes a signed integer as input argument for the block skipping size. It is therefore not possible to access the large period lengths the random number generators offer on a parallel machine.
Was the MKL interface designed with this issue in mind? If so, what is the rationale behind it? If not, is this considered to be a bug?
Are there work-arounds other than using WH, which offers leap frogging?
Thank you for your help.
Debian Linux 3.1