-
Notifications
You must be signed in to change notification settings - Fork 23
Open
Description
This is a question rather than an issue. I hope that's OK to ask here.
I would like to use a RNG for parallel simulations, and so want statistically independent RNGs for each worker process.
For Base.Random.MersenneTwister, I use something like this:
rng = Base.Random.MersenneTwister(0)
rngseed = Base.Random.make_seed()
srand(rng, rngseed)
rngs = randjump(rng, numtrials)
f(trial, rng) = ...
pmap(f, 1:numtrials, rngs)
I would like to use a RNG from the Random123 family.
Is this a good choice for parallel sims?
My code would be something like:
rng = RandomNumbers.Random123.Threefry4x()
rngseed = RandomNumbers.gen_seed(rng)
srand(rng, rngseed)
rngs = Vector{typeof(rng)}(numtrials)
for trial = 1:numtrials
rngs[trial] = copy(rng)
RandomNumbers.Random123.set_counter!(rngs[trial], trial)
end
f(trial, rng) = ...
pmap(f, 1:numtrials, rngs)
Is using set_counter! this way the right approach to give independent RNGs?
Will it work for all RNGs in the Random123 family?
Why would I choose 2x or 4x version?
Which particular RNG would you recommend?
Metadata
Metadata
Assignees
Labels
No labels