我一直在關注茱莉亞和我的思想中的並行編程文檔,這個文檔和openMP或MPI一樣,我覺得設計選擇很奇怪。Julia的並行編程
我有一個應用程序,我希望數據在進程間分配,然後我想告訴每個進程應用一些操作給它分配的任何數據,但我沒有看到在朱莉婭這樣做的方法。這裏是一個例子
julia> r = remotecall(2, rand, 2)
RemoteRef{Channel{Any}}(2,1,30)
julia> fetch(r)
2-element Array{Float64,1}:
0.733308
0.45227
等等過程2生活一個隨機數組與2個元素。我可以通過
julia> remotecall_fetch(2, getindex, r, 1)
0.7333080770447185
應用一些功能,這個數組,但它爲什麼不如果我申請應該改變載體,像函數工作:
julia> remotecall_fetch(2, setindex!, r, 1,1)
ERROR: On worker 2:
MethodError: `setindex!` has no method matching setindex!(::RemoteRef{Channel{Any}}, ::Int64, ::Int64)
in anonymous at multi.jl:892
in run_work_thunk at multi.jl:645
[inlined code] from multi.jl:892
in anonymous at task.jl:63
in remotecall_fetch at multi.jl:731
in remotecall_fetch at multi.jl:734
我不太知道如何描述它,但似乎工人只能回報「新」事物。我沒有看到如何將一些變量和函數發送給工作人員,並讓函數修改了變量。在上面的例子中,我希望數組存在於一個進程中,理想情況下,我可以告訴該進程在該數組上執行一些操作。之後所有的操作都完成了,然後我可以取結果等
我不是朱莉婭,但你可以看看[ZMQ.jl](https://github.com/JuliaLang/ZMQ.jl),並通過zeromq分發和接收工作 –