If your goal is that each call to rand(), regardless of process, sequentially pulls a number from the RNG stream, then perhaps you just need to create a MersenneTwister([seed]) object.
mystream = MersenneTwister(1) ## Parallel execution srand(1) parfor = @parallel (vcat) for i=1:4 rand(mystream) end Intuitively, this seems like it must come with some communication overhead. It seems likely that there should be a way to avoid this overhead with pmap(). Jim On Tuesday, July 15, 2014 6:25:11 PM UTC-4, Gray Calhoun wrote: > > Hi everyone, I'm trying to start using Julia for some Monte Carlo > simulations > (not MCMC) which I'd like to parallelize. I haven't found any documentation > for setting the RNG's seed for parallelization. The naive approach gives > different results than non-parallel execution (which is not surprising). > > Starting with `julia -p 4` and executing: > > ## Sequential execution > srand(1) > seqfor = Array(Float64,4) > for i=1:4 > seqfor[i] = rand() > end > > ## Parallel execution > srand(1) > parfor = @parallel (vcat) for i=1:4 > rand() > end > > [sort(parfor) sort(seqfor)] > > gives > > 4x2 Array{Float64,2}: > 0.346517 0.00790928 > 0.346517 0.236033 > 0.662369 0.312707 > 0.914194 0.346517 > > and re-running the parallel code can give different results even after > re-seeding. If we start julia without `-p 4` then both loops give the > same results. If it matters, I'm using Julia version 0.3.0-rc1+28 > from source (commit 79e4771). > > Is there documentation on the right way to parallelize simulations in > Julia? If not, should my next step be to carefully read the "parallel > computing" documentation? >