mirror of
https://github.com/fverdugo/XM_40017.git
synced 2025-11-24 09:24:32 +01:00
Enhancing solutions for julia_distributed notebook.
This commit is contained in:
@@ -48,11 +48,12 @@ heatmap(x,y,values)
|
|||||||
|
|
||||||
```julia
|
```julia
|
||||||
f = () -> Channel{Int}(1)
|
f = () -> Channel{Int}(1)
|
||||||
chnls = [ RemoteChannel(f,w) for w in workers() ]
|
worker_ids = workers()
|
||||||
@sync for (iw,w) in enumerate(workers())
|
chnls = [ RemoteChannel(f,w) for w in worker_ids ]
|
||||||
|
@sync for (iw,w) in enumerate(worker_ids)
|
||||||
@spawnat w begin
|
@spawnat w begin
|
||||||
chnl_snd = chnls[iw]
|
chnl_snd = chnls[iw]
|
||||||
if w == 2
|
if iw == 1
|
||||||
chnl_rcv = chnls[end]
|
chnl_rcv = chnls[end]
|
||||||
msg = 2
|
msg = 2
|
||||||
println("msg = $msg")
|
println("msg = $msg")
|
||||||
@@ -70,23 +71,26 @@ chnls = [ RemoteChannel(f,w) for w in workers() ]
|
|||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
This is another possible solution.
|
This is another possible solution that does not use remote channels.
|
||||||
|
|
||||||
```julia
|
```julia
|
||||||
@everywhere function work(msg)
|
@everywhere function work(msg,iw,worker_ids)
|
||||||
println("msg = $msg")
|
println("msg = $msg")
|
||||||
if myid() != nprocs()
|
if iw < length(worker_ids)
|
||||||
next = myid() + 1
|
inext = iw+1
|
||||||
@fetchfrom next work(msg+1)
|
next = worker_ids[iw+1]
|
||||||
|
@fetchfrom next work(msg+1,inext,worker_ids)
|
||||||
else
|
else
|
||||||
@fetchfrom 2 println("msg = $msg")
|
@fetchfrom worker_ids[1] println("msg = $msg")
|
||||||
end
|
end
|
||||||
|
return nothing
|
||||||
end
|
end
|
||||||
msg = 2
|
msg = 2
|
||||||
@fetchfrom 2 work(msg)
|
iw = 1
|
||||||
|
worker_ids = workers()
|
||||||
|
@fetchfrom worker_ids[iw] work(msg,iw,worker_ids)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Matrix-matrix multiplication
|
## Matrix-matrix multiplication
|
||||||
|
|
||||||
### Exercise 1
|
### Exercise 1
|
||||||
|
|||||||
Reference in New Issue
Block a user