On Wednesday, December 09, 2015 01:11:13 AM Pieterjan Robbe wrote: > I have been struggling with this issue as well. Unfortunately, Julia does > not have shared memory parallelisation
Not true. See http://docs.julialang.org/en/stable/manual/parallel-computing/#shared-arrays > (yet > <https://github.com/JuliaLang/julia/issues/1790>), so there is no 'nice' > solution for this. > You could of course construct your function like > > @everywhere f(x,r) = sum(x./r,2) > > But, if you don't want to pass the array r every time you call the > function, you can write a separate file, say myFile.jl that contains > > r = collect(1:100) > f(x) = sum(x./r) > > Next, include the file on all processors, like > > @everywhere include("myFile.jl") > > then you can do > > a = ones(100) > r = @spawnat 2 f(a) > fetch(r) > > which gives 5.187378 as result. Unfortunately, this means that every > processor will contain its own copy of the array r, which does not make > sense if you are running your code on a multicore machine with only one > physical memory. Luckily, there is something like Shared Arrays > <http://docs.julialang.org/en/latest/stdlib/parallel/#Base.SharedArray> for > this.