में समानांतर फॉर-लूप में डेटा प्रबंधन मैं जूलिया का उपयोग करके कुछ सांख्यिकीय विश्लेषण करने की कोशिश कर रहा हूं। कोड में script.jl
(उदा। डेटा की प्रारंभिकरण) और algorithm.jl
फ़ाइलें शामिल हैं।जूलिया
सिमुलेशन की संख्या बड़ी है (कम से कम 100,000) इसलिए समांतर प्रसंस्करण का उपयोग करना समझ में आता है।
function script(simulations::Int64)
# initialise input data
...
# initialise other variables for statistical analysis using zeros()
...
require("algorithm.jl")
@parallel for z = 1:simulations
while true
choices = algorithm(data);
if length(choices) == 0
break
else
# process choices and pick one (which alters the data)
...
end
end
end
# display results of statistical analysis
...
end
और
function algorithm(data)
# actual algorithm
...
return choices;
end
उदाहरण के रूप में, मुझे पता है कि कैसे कई विकल्प वहाँ औसत पर हैं चाहते हैं, क्या है -
नीचे कोड मेरे सवाल का वर्णन करने के लिए बस कुछ स्यूडोकोड है सबसे आम पसंद, और इतने पर। इस प्रयोजन के लिए मैं कुछ डेटा सांख्यिकीय विश्लेषण चर ( से पहले initialised के लिए लूप) से ( के बाद के लिए लूप) (के लिए लूप में ) choices
से बचाने के लिए और परिणामों को प्रदर्शित करने की जरूरत है।
मैंने @spawn
और fetch()
और pmap()
जैसे कार्यों का उपयोग करने के बारे में पढ़ा है, लेकिन मुझे यकीन नहीं है कि मुझे आगे कैसे बढ़ना चाहिए। फॉर-लूप के अंदर केवल चर का उपयोग करना काम नहीं करता है क्योंकि प्रत्येक प्रो को अपनी प्रतिलिपि मिलती है, इसलिए फॉर-लूप के बाद सांख्यिकीय विश्लेषण चर के मान शून्य होंगे।
[संपादित करें] जूलिया में मैं include("script.jl")
और script(100000)
का उपयोग सिमुलेशन चलाने के लिए जब एक proc का उपयोग कर, कोई समस्या नहीं है। हालांकि, एकाधिक प्रोसेस का उपयोग करते समय (उदा। addprocs(3)
का उपयोग करके) सभी सांख्यिकीय चर फॉर-लूप के बाद शून्य होते हैं - जिनकी अपेक्षा की जा सकती है।
क्या आपका 'एल्गोरिदम' फ़ंक्शन हमेशा समान 'डेटा' इनपुट के लिए समान' विकल्प 'देता है? – rickhg12hs
@ rickhg12hs हां यह करता है। – Ailurus
फिर अपने छद्म कोड को देखते हुए, न केवल पहला लूप ('z = 1') किसी भी 'विकल्प' को संसाधित करेगा? – rickhg12hs