मैं जुलिआ में समानांतर प्रोग्रामिंग के लिए दस्तावेज़ों का पालन कर रहा हूं और मेरे दिमाग के लिए, जो ओपनएमपी या एमपीआई की तरह सोचता है, मुझे डिज़ाइन पसंद काफी अजीब लगता है।जूलिया में समानांतर प्रोग्रामिंग
मेरे पास एक ऐसा एप्लिकेशन है जहां मैं प्रक्रियाओं के बीच डेटा वितरित करना चाहता हूं, और फिर मैं प्रत्येक प्रक्रिया को कुछ भी ऑपरेशन लागू करने के लिए कुछ प्रक्रियाओं को लागू करना चाहता हूं, फिर भी मुझे जूलिया में ऐसा करने का कोई तरीका नहीं दिख रहा है। यहां एक उदाहरण है
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) पर एक नज़र डाल सकते हैं और ज़ीरोम –