Julia'da paralel programlama için dokümanlar takip ediyorum ve openMP veya MPI gibi düşünen aklım için tasarım seçimini oldukça garip buluyorum.Julia'da Paralel programlama
Verilerin işlemlerin arasında dağıtılmasını istediğim bir uygulamam var, ve sonra her işlemin kendisine atanmış olan verilere bazı işlemleri uygulamalarını söylemek istiyorum, ancak bunu Julia'da yapmanın bir yolunu görmüyorum. Aşağıda, işlem 2'de 2 elemanlı rastgele bir dizi yer alan bir örnek
julia> r = remotecall(2, rand, 2)
RemoteRef{Channel{Any}}(2,1,30)
julia> fetch(r)
2-element Array{Float64,1}:
0.733308
0.45227
örneğidir. Ben
julia> remotecall_fetch(2, getindex, r, 1)
0.7333080770447185
yoluyla bu diziye bazı fonksiyon uygulayabilirsiniz ama gibi vektör değiştirmelisiniz bir işlev uygularsanız neden çalışmıyor: Oldukça nasıl bilmiyorum
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
Bunu açıklayın, ama işçiler sadece "yeni" şeyleri iade edebiliyor gibi görünüyor. Bazı değişkenleri ve bir işçiye nasıl bir işlev gönderebileceğimi görmüyorum ve fonksiyonun değişkenleri yerinde değiştirmesini sağlıyorum. Yukarıdaki örnekte, dizinin tek bir süreçte yaşamasını isterdim ve ideal olarak bu işlemi bu dizide bazı işlemleri gerçekleştirmek için anlatabilirdim. tüm işlemler Sonra sonuçları vb alamadan bitirdikten sonra
Julia değilim, ama [ZMQ.jl] (https://github.com/JuliaLang/ZMQ.jl) bir göz atın ve zeromq –