JuliaLang / JuliaLang/Distributed.jl
module globals and parallel methods
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 55
- Forks
- 19
- PR merge metrics
- No merged PRs in 30d
Description
Consider the following:
julia> addprocs(1)
1-element Array{Int64,1}:
2
julia> @everywhere module Foo
foo() = remotecall(2, ()->(global X=[1]))
bar() = @everywhere X[1]=2
end
julia> Foo.foo()
RemoteRef(2,1,6)
julia> Foo.bar()
exception on 1: exception on 2: ERROR: X not defined
in eval at /home/amitm/Work/julia/julia/base/sysimg.jl:7
in anonymous at multi.jl:1439
in run_work_thunk at multi.jl:598
in run_work_thunk at multi.jl:607
in anonymous at task.jl:6
This is because foo() creates X as module global, while the @everywhere call refers to Main
Would it be appropriate to have the remote part of all parallel methods execute under the same module as the calling module? Is information about the calling module available to a function in Base?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the module Foo example in Distributed.jl, starting with the remotecall and @everywhere behavior described in the issue. Read the referenced multi.jl and sysimg.jl stack locations to trace module resolution. Done means the project has a decided and tested rule for which module remote parallel methods use.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100