使用doParallel和插入符号包

时间:2016-02-11 08:38:39

标签: r r-caret doparallel

我在一个位于32核心服务器上的ubuntu LXC容器中运行R.我使用插入符号包运行并行随机森林模型,使用不同数量的核心:

cl = makeCluster(c(rep("localhost",cores)), outfile = "")
registerDoParallel(cl,cores = cores)

rf_train <- train(gt~.,data=training,
              method='parRF', tuneGrid = data.frame(mtry = 7), na.action = na.omit,
              trControl=trainControl(method='repeatedcv',number=10,
                                     classProbs = TRUE, allowParallel = TRUE)
          )               
stopCluster(cl)

当我使用cores <- 1时,它以串行方式运行而没有错误。

当我使用cores <- 2时,在我运行stopCluster(cl)之前我没有收到任何错误,此时我得到了:

Warning message:
executing %dopar% sequentially: no parallel backend registered 
Warning message:
executing %dopar% sequentially: no parallel backend registered

(请注意,这是在流程已成功完成后,并行完成,由top确认。)

如果我使用cores <- 4或更多,除了在我停止群集时为每个核心重复上述警告,我也会得到 Error in unserialize(socklist[[n]]) : error reading from connection 在计算完成之前。

无论是在Rstudio服务器中还是在控制台中运行计算,此行为都是相同的。我有一个同事的代码,他之前能够使用所有32个内核运行此计算而没有错误。我认为Rstudio Server可能泄漏了内存,但我无法找到证据。 (运行rm()gc()也没有帮助。)

知道可能导致这些错误的原因吗?

0 个答案:

没有答案