插入符号中R的并行处理

时间:2017-06-27 07:27:21

标签: r parallel-processing

在插入符号文档中给出了允许并行处理以下代码的工作

library(doMC) 
registerDoMC(cores = 5) 
## All subsequent models are then run in parallel

但是在最新的R版本(3.4)中,包doMC不可用。任何人都可以让我知道任何其他方式进行并行处理吗?

更新:罗马建议的工作原理。 DoMC不适用于Windows。对于Windows,请使用doParallel包cls = makeCluster(no of cores to use),然后使用registerDoParallel(cls)。还要确保在trControl中将allowParallel设置为TRUE。

3 个答案:

答案 0 :(得分:5)

doMC利用包multicore的强大功能,以分布式/并行模式进行计算。如果您使用Windows不支持的平台,这很好。

您可以使用其他框架,例如随R附带的parallel。为此,您需要在所有三个主要平台上运行的程序包doParallel

答案 1 :(得分:3)

通常我这样做会添加allowParallel= TRUE

svmopt.caret=train(Y~.,data=nearsep1,method="svmLinear",
                   trControl=trainControl(method="cv",number=10,search="grid"),
                   tuneGrid=paramgrid,
                   allowParallel=TRUE)

答案 2 :(得分:2)

只需扩展前面的答案的实现范围,并且基本上使用Caret package documentation,以下是对我有用的食谱:

set.seed(112233)
library(parallel) 
# Calculate the number of cores
no_cores <- detectCores() - 1

library(doParallel)
# create the cluster for caret to use
cl <- makePSOCKcluster(no_cores)
registerDoParallel(cl)

# do your regular caret train calculation enabling
# allowParallel = TRUE for the functions that do
# use it as part of their implementation. This is
# determined by the caret package.

stopCluster(cl)
registerDoSEQ()