NHSE ReviewTM 1996 Volume Second Issue

Random Number Generators for Parallel Computers

| <- HREF="node6.html" Prev | Index | Next -> |
NHSE ReviewTM: Comments · Archive · Search


Requirements for Parallel Random Number Generators 

In addition to the requirements for an ideal sequential random number generator given in Section 4.1, a random number generator for a parallel computer should ideally have the following additional properties:

  1. The generator should work for any number of processors.
  2. The sequences of random numbers generated on each processor should all satisfy the requirements of a good sequential generator, e.g. they should be uniformly distributed, uncorrelated, and have a large enough period.
  3. There should be no correlations between the sequences on different processors.
  4. The same sequence of random numbers should be produced for different numbers of processors, and for the special case of a single processor. This is beneficial for debugging purposes, and is a requirement for some parallel languages such as High Performance Fortran (HPF) [53] (which provides a random number generator as an intrinsic function, as does Fortran 90).
  5. The algorithm should be efficient, which in practice means there should be no data movement between processors. Thus, after the generator is initialized, each processor should generate its sequence independently of the other processors.

As with the ideal sequential generator, in practice it is not feasible to meet all these requirements. Our goal is to find a parallel random number generator that measures up to these ideals as well as possible. For example, we may not be able to say for sure that there are no correlations between sequences on different processors, but we can at least ensure that there is no overlap between the sequences, and if possible try to minimize any correlations.

Note that we will use the word ``processor'' to refer to a single abstract processor, which may correspond to a physical processor, a process, a thread of control within a process, or an array element within a data parallel language such as HPF.

Copyright © 1996


| <- HREF="node6.html" Prev | Index | Next -> |
NHSE ReviewTM: Comments · Archive · Search


Paul Coddington, paulc@npac.syr.edu