The main purpose of this PR is to have MACSio create and use various Pseudo Random Number Generator (PRNGs). MACSio's main creates 6 PRNGs which have different behaviors and require different uses. The naive PRNG is equiv. to random(). It has no requirement to produce same value(s) across MPI ranks or from run to run or from dump to dump in the same run. There are also naive_tv, naive_rv and naive_rtv which are, respectively, time-variant, rank-variant and time- and rank-variant. Finally, there are two PRNGs which are rank-INvariant, one that is time-variant and one that is not. Depending on circumstances, MACSio uses various of these PRNGs to produce randomization.
Previously, we were using random() for one purpose and rand() for another but that had limitations and the new code can be used for all purposes.
The main purpose of this PR is to have MACSio create and use various Pseudo Random Number Generator (PRNGs). MACSio's main creates 6 PRNGs which have different behaviors and require different uses. The
naive
PRNG is equiv. torandom()
. It has no requirement to produce same value(s) across MPI ranks or from run to run or from dump to dump in the same run. There are alsonaive_tv
,naive_rv
andnaive_rtv
which are, respectively, time-variant, rank-variant and time- and rank-variant. Finally, there are two PRNGs which are rank-INvariant, one that is time-variant and one that is not. Depending on circumstances, MACSio uses various of these PRNGs to produce randomization.Previously, we were using
random()
for one purpose andrand()
for another but that had limitations and the new code can be used for all purposes.I also enabled the
--time_randomze
CL arg.