doMC in R und foreach loop funktionieren nicht
Ich versuche, das foreach-Paket für die parallele Verarbeitung in R zum Laufen zu bringen, und ich habe ein paar Probleme:
Das doMC-Paket, das für jede Arbeit erforderlich ist, ist in CRAN für Windows nicht vorhanden. Einige Blogs schlagen vor, dass doSNOW stattdessen den gleichen Job machen sollte. Wenn ich jedoch den Befehl foreach mit doSNOW ausführe,%dopar%
scheint nicht schneller zu arbeiten als%do%
. In der Tat ist es viel langsamer. Meine CPU ist ein Intel i7 860 @ 2.80GHz mit 8 GB RAM. Unten ist mein Code:
##Run example in 1 core
require(foreach)
require(doSNOW)
x= iris[which(iris[,5] != "setosa"),c(1,5)]
trials = 10000
system.time({
r= foreach(icount(trials), .combine=cbind) %do% {
ind=sample(100,100,replace=TRUE)
results1 = glm(x[ind,2]~x[ind,1],family=binomial(logit))
coefficients(results1)
}
})[3]
# elapsed
# 37.28
# Same example in 2 cores
registerDoSNOW(makeCluster(2,type="SOCK"))
getDoParWorkers()
trials = 10000
system.time({
r= foreach(icount(trials), .combine=cbind) %dopar% {
ind=sample(100,100,replace=TRUE)
results1 = glm(x[ind,2]~x[ind,1],family=binomial(logit))
coefficients(results1)
}
})[3]
# elapsed
# 108.14
Ich habe alle benötigten Pakete neu installiert, aber immer noch die gleichen Probleme. Hier ist die Ausgabe:
sessionInfo()
#R version 2.15.1 (2012-06-22)
#Platform: i386-pc-mingw32/i386 (32-bit)
#locale:
#[1] LC_COLLATE=English_United States.1252
#[2] LC_CTYPE=English_United States.1252
#[3] LC_MONETARY=English_United States.1252
#[4] LC_NUMERIC=C
#[5] LC_TIME=English_United States.1252
#attached base packages:
#[1] parallel stats graphics grDevices datasets utils methods
#[8] base
#other attached packages:
#[1] doParallel_1.0.1 codetools_0.2-8 doSNOW_1.0.6 snow_0.3-10
#[5] iterators_1.0.6 foreach_1.4.0 rcom_2.2-5 rscproxy_2.0-5
#loaded via a namespace (and not attached):
#[1] compiler_2.15.1 tools_2.15.1