Do you need the @everywhere? using should be good enough on its own.
However, this isn't working perfectly: see
https://github.com/JuliaLang/julia/issues/9245
https://github.com/JuliaLang/julia/issues/3674
for some things you may need to work around (or better yet, submit a fix for!).
In particular, your experience and #9245 can both be worked around with the
following "amusing" sequence:
$ julia -p 2
_
_ _ _(_)_ | A fresh approach to technical computing
(_) | (_) (_)| Documentation: http://docs.julialang.org
_ _ _| |_ __ _ | Type "?help" for help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 0.4.4-pre+2 (2016-01-18 02:17 UTC)
_/ |\__'_|_|_|\__'_| | Commit a85c3a0* (78 days old release-0.4)
|__/ | x86_64-linux-gnu
julia> using ColorTypes
julia> @everywhere using ColorTypes
The first one loads the code on all workers; the only thing the second one does
is to bring the bindings into Main (if you need that).
Best,
--Tim
On Tuesday, April 05, 2016 06:36:22 AM Thomas Covert wrote:
> I have some code in a module (say, MyModule.jl) for which I would like each
> worker in a pmap() to have access. Right now, I accomplish this by
> something like:
>
> addprocs(CPU_CORES)
> @everywhere using MyModule
> function dostuff(x)
> # code that uses functions exported from MyModule
> end
> results = pmap(dostuff, X)
>
> where X is an array of things to pass to dostuff
>
> This works. However, the @everywhere macro called on the using statement
> results in this set of warnings:
>
> WARNING: replacing module MyModule
>
> WARNING: replacing module MyModule
>
> WARNING: replacing module MyModule
>
> WARNING: replacing module MyModule
>
>
> Is this the idiomatic way to accomplish this task? I would have thought
> there is a way to write this code so that warnings such as these don't
> appear.