hi Bastiaan
please try the nightly build. I am about to announce MCX 2018 (version 1.0 final - yeah!), the nightly build could be the final package if no issues are found by users.
there has been many many improvement/fixes, although I don't see they are related to the issue reported here, but please give it a try: http://mcx.space/nightly/
on the other hand, you can test the following:
1. remove the RNGSeed fields from the input file, you should be able to see reproduced results (default RNG seed is fixed)
2. use -E 7777777 in the command line, and see if the results are reproduced.
one thing I want to clarify here is that, in theory, creating
reproduced results from parallel programs is generally not
expected. This is because (a+b)+c != a+ (b+c) in floating point in
multi-threading environment. However, nvidia's hardware has been
giving excellent reproducibility due to some fixed thread
scheduling method, so mcx has been able to generate reproducible
results. In comparison, MMC is not able to produce exactly the
same results using OpenMP on CPUs due to the very reason.
Qianqian
| Subject: | [mcx-users] Issues with random number generator |
|---|---|
| Date: | Wed, 25 Jul 2018 03:07:40 -0700 (PDT) |
| From: | Bastiaan <hcbfl...@gmail.com> |
| Reply-To: | mcx-...@googlegroups.com |
| To: | mcx-users <mcx-...@googlegroups.com> |
To unsubscribe from this group and stop receiving emails from it, send an email to mcx-users+unsubscribe@googlegroups.com.
Dear Qianqian,
Thanks for your quick reply.
I have tested both your suggestions and the results are not reproducible, see attachemts. DefaultSeeds.png show the results for your first suggestion. Seeds-E7777777flag.png shows the results for your second suggestion.
Furthermore, your comment
'one thing I want to clarify here is that, in theory, creating reproduced results from parallel programs is generally not expected. This is because (a+b)+c != a+ (b+c) in floating point in multi-threading environment. However, nvidia's hardware has been giving excellent reproducibility due to some fixed thread scheduling method, so mcx has been able to generate reproducible results. In comparison, MMC is not able to produce exactly the same results using OpenMP on CPUs due to the very reason. '
gives me a concern. The reason why we can do parallel programming is due to the data parallelism which is assured to give us the same result. If that assertion was true, then doing (a+b) in the first core, with c in the second core and then using the second core to get the result should give us a floating number which is close to machine precision if we did it the other way round.Are you saying that because we it's parallel programs this property is no longer true?
Kind regards,
Bastiaan
To unsubscribe from this group and stop receiving emails from it, send an email to mcx-users+...@googlegroups.com.