R 并行化插入符号代码
我很难弄明白为什么这段代码不能并行化。我直接从插入符号网页上获取可复制的示例R 并行化插入符号代码,r,parallel-processing,r-caret,R,Parallel Processing,R Caret,我很难弄明白为什么这段代码不能并行化。我直接从插入符号网页上获取可复制的示例 library(caret) library(mlbench) library(Hmisc) library(randomForest) library(doMC) registerDoMC(cores = 3) n <- 100 p <- 40 sigma <- 1 set.seed(1) sim <- mlbench.friedman1(n, sd = sigma) colnames(si
library(caret)
library(mlbench)
library(Hmisc)
library(randomForest)
library(doMC)
registerDoMC(cores = 3)
n <- 100
p <- 40
sigma <- 1
set.seed(1)
sim <- mlbench.friedman1(n, sd = sigma)
colnames(sim$x) <- c(paste("real", 1:5, sep = ""),
paste("bogus", 1:5, sep = ""))
bogus <- matrix(rnorm(n * p), nrow = n)
colnames(bogus) <- paste("bogus", 5+(1:ncol(bogus)), sep = "")
x <- cbind(sim$x, bogus)
y <- sim$y
normalization <- preProcess(x)
x <- predict(normalization, x)
x <- as.data.frame(x)
subsets <- c(1:5, 10, 15, 20, 25)
set.seed(10)
ctrl <- rfeControl(functions = lmFuncs,
method = "repeatedcv",
repeats = 50,
verbose = FALSE)
lmProfile <- rfe(x, y,
sizes = subsets,
rfeControl = ctrl)
plot(lmProfile)
前面的示例使用1个核心。在没有并行化代码的情况下,前面的示例使用2个内核。我使用“top”和“htop”来检查芯数。我想用我所有的4核,但我不知道问题出在哪里
> sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8
[8] LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] BradleyTerry2_1.0-5 brglm_0.5-9 car_2.0-20 caret_6.0-30 codetools_0.2-8 colorspace_1.2-4 digest_0.6.4 foreach_1.4.2 ggplot2_1.0.0
[10] grid_3.1.0 gtable_0.1.2 gtools_3.4.1 iterators_1.0.7 kernlab_0.9-19 lattice_0.20-29 lme4_1.1-7 MASS_7.3-31 Matrix_1.1-3
[19] minqa_1.2.3 munsell_0.4.2 nlme_3.1-117 nloptr_1.0.0 nnet_7.3-8 plyr_1.8.1 proto_0.3-10 Rcpp_0.11.1 reshape2_1.4
[28] scales_0.2.4 splines_3.1.0 stringr_0.6.2
更新:使用R版本3.0.3,一切正常。好像是个虫子。解决方案->降级R只是猜测-doMC有问题吗?并行化在其他情况下是否正常工作?我在我的机器上重复了你的代码,它运行得很好。我有不同版本的R和软件包。@DrDom你有哪个版本的R?我使用R版本3.0.1 2013-05-16,平台:x86_64-pc-linux-gnu 64位,doMC_1.3.3,foreach_1.4.1,caret_6.0-24我用R版本3.0.3试过,所有的作品都有。似乎是一个bug。它在OSX和R3.1.1、DOMC1.3.2上运行。确保列车和/或rfe中的控制对象没有allowParallel=FALSE。
> sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-pc-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8
[8] LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] BradleyTerry2_1.0-5 brglm_0.5-9 car_2.0-20 caret_6.0-30 codetools_0.2-8 colorspace_1.2-4 digest_0.6.4 foreach_1.4.2 ggplot2_1.0.0
[10] grid_3.1.0 gtable_0.1.2 gtools_3.4.1 iterators_1.0.7 kernlab_0.9-19 lattice_0.20-29 lme4_1.1-7 MASS_7.3-31 Matrix_1.1-3
[19] minqa_1.2.3 munsell_0.4.2 nlme_3.1-117 nloptr_1.0.0 nnet_7.3-8 plyr_1.8.1 proto_0.3-10 Rcpp_0.11.1 reshape2_1.4
[28] scales_0.2.4 splines_3.1.0 stringr_0.6.2