As far as I can tell if our random number generator is any good - which I
don't know if we have properly checked or not - two sets of random numbers
from different seeds should not have any correlation. Thus it should be
equally correct (statistically) to do a Langevin run with each processor
having its own random number stream - with simply different seeds for each
mpi thread. This should be equivalent to having a single random number
stream shared between all processors where each processor makes sure it
doesn't use the same portion of the stream as other processors.
Of course the first option makes testing in parallel difficult but then we
only get about 300 steps or so matching anyway.
So perhaps we should have two modes of operation (controlled in $cntrl
maybe).
A testing mode in which it does exactly what we have now and a production
mode in which each thread uses its own random number stream. The question is
how to set ig on each processor. One option would be for the master to use
IG from &cntrl and then each mpi task add a successively bigger prime number
to IG and use that (ig+3,+5,+7,+11 etc...). Another option would be for each
processor to just add its task ID to ig but this may not be safe since it is
possible that two random number streams for IG and IG+1 have some
correlation - although I think this is purely hearsay and again I don't
think it has been checked.
These approaches would at least be reproducible on a given number of
processors - for sander at least, perhaps not for PMEMD.
Comments?
/\
\/
|\oss Walker
| Assistant Research Professor |
| San Diego Supercomputer Center |
| Tel: +1 858 822 0854 | EMail:- ross.rosswalker.co.uk |
|
http://www.rosswalker.co.uk | PGP Key available on request |
Note: Electronic Mail is not secure, has no guarantee of delivery, may not
be read every day, and should not be used for urgent or sensitive issues.
Received on Sun May 11 2008 - 06:07:12 PDT