Another way would be to just initialize a `MersenneTwister` stream on each
process, and seed them differently. Since the streams are process local,
there shouldn't be any communication overhead, and streams with different
seeds should be independent.
// T
On Wednesday, July 16, 2014 7:07:09 AM UTC+2, James Delaney wrote:
>
> 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?
>>
>