Hi Everybody!

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.

Regards,

Michael

MKL 8.0.1p6

Debian Linux 3.1