मैं अपने विंडोज मशीन पर समानांतर में predict()
चलाने की कोशिश कर रहा हूं। यह छोटे डेटासेट पर काम करता है, लेकिन अच्छी तरह से स्केल नहीं करता है क्योंकि प्रत्येक प्रक्रिया के लिए डेटा फ्रेम की नई प्रति बनाई जाती है। अस्थायी प्रतियों के बिना समानांतर में कैसे चलाना है?समांतर भविष्यवाणी
मेरे कोड (केवल कुछ this मूल कोड के संशोधन):
library(foreach)
library(doSNOW)
fit <- lm(Employed ~ ., data = longley)
scale <- 100
longley2 <- (longley[rep(seq(nrow(longley)), scale), ])
num_splits <-4
cl <- makeCluster(num_splits)
registerDoSNOW(cl)
split_testing<-sort(rank(1:nrow(longley))%%num_splits)
predictions<-foreach(i= unique(split_testing),
.combine = c, .packages=c("stats")) %dopar% {
predict(fit, newdata=longley2[split_testing == i, ])
}
stopCluster(cl)
मैं सरल डेटा प्रतिकृति का उपयोग कर रहा यह परीक्षण करने के लिए। scale
10 या 1000 के साथ यह काम कर रहा है, लेकिन मैं इसे scale <- 1000000
के साथ चलाऊंगा - 16 एम पंक्तियों के साथ डेटा फ्रेम (द्वारा द्वारा pryr
से संकेतित किया गया है। ध्यान दें कि जब आवश्यक हो तो मैं लिनक्स मशीन का भी उपयोग कर सकता हूं, अगर यह एकमात्र विकल्प है