我想获得的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