-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RemoteRefs refer to any type of AbstractChannel #12385
Conversation
de2d66d
to
0393ae2
Compare
Have added docs and tests. Please refer to the manual changes and added example for a more detailed explanation of this PR. |
0393ae2
to
aeca5a9
Compare
Feedback? Bikeshedding names? |
How hard would it be in this design to used shared memory for implementing remote references if the workers are all on the same node? |
Well, the usual considerations in using shmem for IPC apply. A
|
aeca5a9
to
02eb352
Compare
Will merge in a day or two. |
02eb352
to
ef917b0
Compare
ef917b0
to
4d08b6d
Compare
Have rebased and removed changes to |
Error in restarting job. |
RemoteRefs refer to any type of AbstractChannel
I think those should be re-added, but now in helpdb |
strange parallel segfault on osx travis a few builds after this was merged https://travis-ci.org/JuliaLang/julia/jobs/73898628, might be unrelated though? |
Hmmm, the PR was Julia code only and seg faults usually point to a bug elsewhere - I don't know if this PR triggered some other fault elsewhere. https://gist.github.com/amitmurthy/38e4bac61adc76b7fbdb above was also an invalid free. |
With this PR:
RemoteRef
s refer to anAbstractChannel
AbstractChannel
, implementstake!
,fetch
,put!
,isready
andwait
RemoteRef(f::Function, pid=myid())
wheref()
must return anAbstractChannel
, is used to construct a remote channel on workerpid
.RemoteRef
constructors create a remoteChannel{Any}(1)
which mimics the current behavior.The larger and deeper issue of redoing distributed gc in #12042 can be deferred to 0.5
We don't break any existing code and this is a minimal change that enables us to have remote channels of specified type and length in 0.4 itself. And more importantly unifies RemoteRefs and Channels.
cc @JeffBezanson, @jakebolewski , @ViralBShah, @malmaud