"you could precreate A and then define it everywhere" Could you please show me some code how to do it?
On Monday, September 15, 2014 2:51:08 PM UTC+2, John Drummond wrote: > > Chris Strickland > <https://groups.google.com/forum/#!msg/julia-users/jlKoEtErRL4/0ZcB_hxyJlYJ> > lists one approach for the general problem > > you could precreate A and then define it everywhere, or send a copy over > as a parameter to whatever function you use in pmap, similar but not the > same as above > > Another approach which was useful to me was the @parallel for loops > "Any variables used inside the parallel loop will be copied and broadcast > to each process." > <http://julia.readthedocs.org/en/latest/manual/parallel-computing/> > > and shared arrays > <http://julia.readthedocs.org/en/latest/manual/parallel-computing/#shared-arrays-experimental-unix-only-feature> > > if using linux could be useful (I've not tried them). > > > > On Monday, September 15, 2014 10:52:33 AM UTC+1, [email protected] wrote: >> >> I want to transfer a variable to all parallel workers. However, if I do: >> >> A=rand() >> pmap(x->A+x,1:3) >> >> Return error: >> exception on 2: ERROR: A not defined >> in anonymous at none:1 >> in anonymous at multi.jl:855 >> in run_work_thunk at multi.jl:621 >> in anonymous at task.jl:855 >> exception on 3: ERROR: A not defined >> in anonymous at none:1 >> in anonymous at multi.jl:855 >> in run_work_thunk at multi.jl:621 >> in anonymous at task.jl:855 >> 2-element Array{Any,1}: >> UndefVarError(:A) >> UndefVarError(:A) >> >> The result of >> @everywhere A=rand() >> pmap(x->A+x,1:3) >> is not what I want, since I hope A in all mashines are the same. >> >> I know that pmap((x,y)->x+y,1:3,fill(A,3)) will be work, but I don't >> think it is smart since A is expand in memery unnessarily. Is there any >> simple way to just send a copy of A, or the reference of A, to all parallel >> mashines? >> >
