3 ms·
I've been diving into parallel reproducible PRNG [1] in the end I choose to have a PRNG based on xoshiro and seeding process that could take loop iteration vari
by mratsim 6y ago
I've been diving into parallel reproducible PRNG [1] in the end I choose to have a PRNG based on xoshiro and seeding process that could take loop iteration variables [2] for reproducibility:
- [1] https://github.com/mratsim/weave/issues/147 https://github.com/mratsim/weave/issues/147
- [2] https://github.com/mratsim/trace-of-radiance/blob/99f7d85/trace_of_radiance/support/rng.nim#L21-L53 https://github.com/mratsim/trace-of-radiance/blob/99f7d85/tr...
- Usage for parallel raytracing: https://github.com/mratsim/trace-of-radiance/blob/99f7d85/trace_of_radiance/render.nim#L55-L60 https://github.com/mratsim/trace-of-radiance/blob/99f7d85/tr...
Beyond the JAX paper, the Pedigree-based RNG from Leiserson was interesting as well:
- http://supertech.csail.mit.edu/papers/dprng.pdf http://supertech.csail.mit.edu/papers/dprng.pdf
- https://pdfs.semanticscholar.org/a32c/3b7b8d5d3ebd594bea2d9c0935c1ac7f8e24.pdf https://pdfs.semanticscholar.org/a32c/3b7b8d5d3ebd594bea2d9c...
And Haskell's splittable RNG:
- http://www.hg.schaathun.net/research/Papers/hgs2015jfp.pdf http://www.hg.schaathun.net/research/Papers/hgs2015jfp.pdf
- http://publications.lib.chalmers.se/records/fulltext/183348/local_183348.pdf http://publications.lib.chalmers.se/records/fulltext/183348/...
- http://gee.cs.oswego.edu/dl/papers/oopsla14.pdf http://gee.cs.oswego.edu/dl/papers/oopsla14.pdf