我想獲得的foreach包進行並行處理R中的工作,我有幾個問題:DOMC在R和foreach循環不工作
所作出的foreach工作所需的DOMC包不存在於CRAN for Windows上。有些博客建議doSNOW應該做同樣的工作。但是,當我使用doSNOW運行foreach命令時,%dopar%
似乎沒有比%do%
快。實際上它慢得多。我的CPU是帶有8 GB RAM的Intel i7 860 @ 2.80GHz。下面是我的代碼:
##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
我重新安裝了所有所需的軟件包,但還是同樣的問題。下面是輸出:
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
運行R-2.15.1,doSNOW_1.0.5,snow_0.3-8,foreach_1.3.2,codetools_0.2-8和iterators_1.0.5的''%dopar%''示例運行速度更快。你機器上'sessionInfo'的輸出是什麼? – 2012-07-23 17:50:03
請編輯您的問題並添加該信息。閱讀起來會更容易。 – 2012-07-24 17:12:26