मैं doParallel और foreach पैकेज का उपयोग करने की कोशिश कर रहा हूं लेकिन मुझे CRANpage पर मिली मार्गदर्शिका में बूटस्ट्रैपिंग उदाहरण का उपयोग करके प्रदर्शन में कमी आ रही है।DoParallel और foreach के साथ शुरू करने का प्रयास कर रहा है लेकिन कोई सुधार
library(doParallel)
library(foreach)
registerDoParallel(3)
x <- iris[which(iris[,5] != "setosa"), c(1,5)]
trials <- 10000
ptime <- system.time({
r <- foreach(icount(trials), .combine=cbind) %dopar% {
ind <- sample(100, 100, replace=TRUE)
result1 <- glm(x[ind,2]~x[ind,1], family=binomial(logit))
coefficients(result1)
}
})[3]
ptime
यह उदाहरण 56.87
देता है।
जब मैं बदल dopar
सिर्फ do
इसे चलाने के लिए करने के लिए क्रमिक रूप से करने के बजाय समानांतर में, यह 36.65
देता है।
यह 42.11
करने के लिए नीचे समानांतर समय हो जाता है अगर मैं registerDoParallel(6)
है, लेकिन अभी भी क्रमिक रूप से की तुलना में धीमी है। registerDoParallel(8)
40.31
अनुक्रमिक से भी बदतर हो जाता है।
यदि मैं trials
को 100,000 तक बढ़ाता हूं तो अनुक्रमिक रन 417.16
लेता है और 3 श्रमिकों के साथ समानांतर रन 597.31
लेता है। समांतर में 6 श्रमिकों के साथ 425.85
लगता है।
मेरे प्रणाली
डेल Optiplex 990
विंडोज 7 प्रोफेशनल 64-बिट
16GB राम
इंटेल आई-7-2600 3.6GHz है ट्रैक्टर हाइपरथ्रेडिंग के साथ कोर
क्या मैं यहां कुछ गलत कर रहा हूं? यदि मैं सबसे अधिक प्रतिस्पर्धी चीज करता हूं तो मैं सोच सकता हूं (Sys.sleep(1)
के साथ कम्प्यूटेशनल कोड को प्रतिस्थापित करना) तो मुझे श्रमिकों की संख्या के मुकाबले एक वास्तविक कमी मिलती है। मैं सोच रहा हूं कि मार्गदर्शिका में उदाहरण मेरे लिए प्रदर्शन क्यों कम करता है, जबकि उनके लिए यह चीजों को बढ़ा देता है?
यह लगभग एक अकसर किये गए सवाल है: आप Sys.sleep() के साथ परीक्षण करना ठीक था, और यह दिखाता है कि धागे को स्थापित करने से कंप्यूटिंग की तुलना में अधिक समय की आवश्यकता होती है। समस्या का आकार बढ़ाने की कोशिश करें, यानी नमूना (10000), और आप एक सुधार देखेंगे। हालांकि, आपकी मशीन प्रभावी रूप से केवल 4 कोर है, इसलिए 4 कोर से परे कुछ भी काम नहीं करता है। मैंने कभी भी हाइपरथ्रेडिंग (विंडोज़ के तहत, और विशेष आर संकलन के बिना) का प्रभाव कभी नहीं देखा है –
@DieterMenne: इसके बारे में आपका प्रश्न पूछे जाने वाले प्रश्नोत्तरी अच्छी तरह से ली गई है। तथ्य यह है कि गाइड के उदाहरण ने मेरे माध्यम से मेरे लिए लाभ नहीं बनाया। आप सही थे कि नमूना आकार में वृद्धि से मुझे समानांतर चलने वाला एक सुधार मिलेगा। इसके अलावा, एचटी के बारे में टिप के लिए धन्यवाद। मैंने 4 बनाम 8 श्रमिकों के साथ एक परीक्षण किया और यह मूल रूप से एक ही समय था। –