Random seed in multi-core parallel running

Dear Julia Users,

I was using @distributed to run 1000 replicates of simulations across 100 cores. How should I set the random seed across these cores to make simulation results reproducible? We need to make sure different cores start with a different seed and there are no replicates / overlap across different cores.

Thanks a lot!

A simple option is seed based on some function of your replicate index and myid():

using Distributed
@everywhere using Random
@everywhere Random.seed!(1000*replicate_idx + myid())
2 Likes

Thanks! It seems

@distributed for replicate_idx=1:1000
Random.seed!(replicate_idx) 
...
end 

should be fine no matter how many random procedures in each replicate of simulation. :slight_smile:

1 Like

Ah, I think I misunderstood: yes, if you have 1000 replicates that you’re sharding out across various processes, that should be the simplest option.