LLNL / MACSio

A Multi-purpose, Application-Centric, Scalable I/O Proxy Application
https://computing.llnl.gov/projects/co-design/macsio
Other
34 stars 16 forks source link

Add various PRNGs and use as appropriate #15

Closed markcmiller86 closed 5 years ago

markcmiller86 commented 6 years ago

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.

I also enabled the --time_randomze CL arg.

markcmiller86 commented 6 years ago

I've gone ahead and requested @gonsie to review this PR. However, if you are over-subscribed presently, let me know and I will merge myself.